## Another Linux shared library trace facility

October 27, 2016 C/C++ development and debugging. No comments , ,

Where that fails to be useful, is when you don’t have a guess about what shared library the code in question lives in. I just blundered on the latrace command that uses a Linux dynamic loader audit facility to give a complete trace of all the function-name/library-name pairs that are executed!

Here’s an example invocation:

latrace \
clang xx.c -c 2>&1 | c++filt


without output like:

...
9022     std::operator&(std::memory_order, std::__memory_order_modifier) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMAnalysis.so]
9022     std::operator&(std::memory_order, std::__memory_order_modifier) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMAnalysis.so]
9022     strlen [/lib64/libc.so.6]
9022     strlen [/lib64/libc.so.6]
9022     strlen [/lib64/libc.so.6]
9022     llvm::cl::basic_parser::basic_parser(llvm::cl::Option&) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMSupport.so]
9022     strlen [/lib64/libc.so.6]
9022     llvm::cl::Option::setArgStr(llvm::StringRef) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMSupport.so]
9022     strlen [/lib64/libc.so.6]
9022     std::pair::__type, std::__decay_and_strip::__type> std::make_pair(void const**&&, bool&&) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMX86CodeGen.so]
9022       void const**&& std::forward(std::remove_reference::type&) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMX86CodeGen.so]
9022       bool&& std::forward(std::remove_reference::type&) []
9022       void const**&& std::forward(std::remove_reference::type&) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMX86CodeGen.so]
9022       bool&& std::forward(std::remove_reference::type&) []
9022     void const**&& std::forward(std::remove_reference::type&) [/home/pjoot/clang/be.5e0ac1f.lz31/bin/../lib/libLLVMX86CodeGen.so]
...


With this latrace command, we get all the shared library function call names and their corresponding shared library names. Using that info we can dig into a specific shared library with ltrace or the debugger, once a point of interest is determined.

## Line charge field and potential.

When computing the most general solution of the electrostatic potential in a plane, Jackson [1] mentions that $$-2 \lambda_0 \ln \rho$$ is the well known potential for an infinite line charge (up to the unit specific factor). Checking that statement, since I didn’t recall what that potential was offhand, I encountered some inconsistencies and non-convergent integrals, and thought it was worthwhile to explore those a bit more carefully. This will be done here.

### Using Gauss’s law.

For an infinite length line charge, we can find the radial field contribution using Gauss’s law, imagining a cylinder of length $$\Delta l$$ of radius $$\rho$$ surrounding this charge with the midpoint at the origin. Ignoring any non-radial field contribution, we have

\label{eqn:lineCharge:20}
\int_{-\Delta l/2}^{\Delta l/2} \ncap \cdot \BE (2 \pi \rho) dl = \frac{\lambda_0}{\epsilon_0} \Delta l,

or

\label{eqn:lineCharge:40}
\BE = \frac{\lambda_0}{2 \pi \epsilon_0} \frac{\rhocap}{\rho}.

Since

\label{eqn:lineCharge:60}

this means that the potential is

\label{eqn:lineCharge:80}
\phi = -\frac{2 \lambda_0}{4 \pi \epsilon_0} \ln \rho.

### Finite line charge potential.

Let’s try both these calculations for a finite charge distribution. Gauss’s law looses its usefulness, but we can evaluate the integrals directly. For the electric field

\label{eqn:lineCharge:100}
\BE
= \frac{\lambda_0}{4 \pi \epsilon_0} \int \frac{(\Bx – \Bx’)}{\Abs{\Bx – \Bx’}^3} dl’.

Using cylindrical coordinates with the field point $$\Bx = \rho \rhocap$$ for convience, the charge point $$\Bx’ = z’ \zcap$$, and a the charge distributed over $$[a,b]$$ this is

\label{eqn:lineCharge:120}
\BE
= \frac{\lambda_0}{4 \pi \epsilon_0} \int_a^b \frac{(\rho \rhocap – z’ \zcap)}{\lr{\rho^2 + (z’)^2}^{3/2}} dz’.

When the charge is uniformly distributed around the origin $$[a,b] = b[-1,1]$$ the $$\zcap$$ component of this field is killed because the integrand is odd. This justifies ignoring such contributions in the Gaussing cylinder analysis above. The general solution to this integral is found to be

\label{eqn:lineCharge:140}
\BE
=
\frac{\lambda_0}{4 \pi \epsilon_0}
\evalrange{
\lr{
\frac{z’ \rhocap }{\rho \sqrt{ \rho^2 + (z’)^2 } }
+\frac{\zcap}{ \sqrt{ \rho^2 + (z’)^2 } }
}
}{a}{b},

or
\label{eqn:lineCharge:240}
\boxed{
\BE
=
\frac{\lambda_0}{4 \pi \epsilon_0}
\lr{
\frac{\rhocap }{\rho}
\lr{
\frac{b}{\sqrt{ \rho^2 + b^2 } }
-\frac{a}{\sqrt{ \rho^2 + a^2 } }
}
+ \zcap
\lr{
\frac{1}{ \sqrt{ \rho^2 + b^2 } }
-\frac{1}{ \sqrt{ \rho^2 + a^2 } }
}
}.
}

When $$b = -a = \Delta l/2$$, this reduces to

\label{eqn:lineCharge:160}
\BE
=
\frac{\lambda_0}{4 \pi \epsilon_0}
\frac{\rhocap }{\rho}
\frac{\Delta l}{\sqrt{ \rho^2 + (\Delta l/2)^2 } },

which further reduces to \ref{eqn:lineCharge:40} when $$\Delta l \gg \rho$$.

### Finite line charge potential. Wrong but illuminating.

Again, putting the field point at $$z’ = 0$$, we have

\label{eqn:lineCharge:180}
\phi(\rho)
= \frac{\lambda_0}{4 \pi \epsilon_0} \int_a^b \frac{dz’}{\lr{\rho^2 + (z’)^2}^{1/2}},

which integrates to
\label{eqn:lineCharge:260}
\phi(\rho)
= \frac{\lambda_0}{4 \pi \epsilon_0 }
\ln \frac{ b + \sqrt{ \rho^2 + b^2 }}{ a + \sqrt{\rho^2 + a^2}}.

With $$b = -a = \Delta l/2$$, this approaches

\label{eqn:lineCharge:200}
\phi
\approx
\frac{\lambda_0}{4 \pi \epsilon_0 }
\ln \frac{ (\Delta l/2) }{ \rho^2/2\Abs{\Delta l/2}}
=
\frac{-2 \lambda_0}{4 \pi \epsilon_0 } \ln \rho
+
\frac{\lambda_0}{4 \pi \epsilon_0 }
\ln \lr{ (\Delta l)^2/2 }.

Before $$\Delta l$$ is allowed to tend to infinity, this is identical (up to a difference in the reference potential) to \ref{eqn:lineCharge:80} found using Gauss’s law. It is, strictly speaking, singular when $$\Delta l \rightarrow \infty$$, so it does not seem right to infinity as a reference point for the potential.

There’s another weird thing about this result. Since this has no $$z$$ dependence, it is not obvious how we would recover the non-radial portion of the electric field from this potential using $$\BE = -\spacegrad \phi$$? Let’s calculate the elecric field from \ref{eqn:lineCharge:180} explicitly

\label{eqn:lineCharge:220}
\begin{aligned}
\BE
&=
-\frac{\lambda_0}{4 \pi \epsilon_0}
\ln \frac{ b + \sqrt{ \rho^2 + b^2 }}{ a + \sqrt{\rho^2 + a^2}} \\
&=
-\frac{\lambda_0 \rhocap}{4 \pi \epsilon_0 }
\PD{\rho}{}
\ln \frac{ b + \sqrt{ \rho^2 + b^2 }}{ a + \sqrt{\rho^2 + a^2}} \\
&=
-\frac{\lambda_0 \rhocap}{4 \pi \epsilon_0}
\lr{
\inv{ b + \sqrt{ \rho^2 + b^2 }} \frac{ \rho }{\sqrt{ \rho^2 + b^2 }}
-\inv{ a + \sqrt{ \rho^2 + a^2 }} \frac{ \rho }{\sqrt{ \rho^2 + a^2 }}
} \\
&=
-\frac{\lambda_0 \rhocap}{4 \pi \epsilon_0 \rho}
\lr{
\frac{ -b + \sqrt{ \rho^2 + b^2 }}{\sqrt{ \rho^2 + b^2 }}
-\frac{ -a + \sqrt{ \rho^2 + a^2 }}{\sqrt{ \rho^2 + a^2 }}
} \\
&=
\frac{\lambda_0 \rhocap}{4 \pi \epsilon_0 \rho}
\lr{
\frac{ b }{\sqrt{ \rho^2 + b^2 }}
-\frac{ a }{\sqrt{ \rho^2 + a^2 }}
}.
\end{aligned}

This recovers the radial component of the field from \ref{eqn:lineCharge:240}, but where did the $$\zcap$$ component go? The required potential appears to be

\label{eqn:lineCharge:340}
\phi(\rho, z)
=
\frac{\lambda_0}{4 \pi \epsilon_0 }
\ln \frac{ b + \sqrt{ \rho^2 + b^2 }}{ a + \sqrt{\rho^2 + a^2}}

\frac{z \lambda_0}{4 \pi \epsilon_0 }
\lr{ \frac{1}{\sqrt{\rho^2 + b^2}}
-\frac{1}{\sqrt{\rho^2 + a^2}}
}.

When computing the electric field $$\BE(\rho, \theta, z)$$, it was convienent to pick the coordinate system so that $$z = 0$$. Doing this with the potential gives the wrong answers. The reason for this appears to be that this kills the potential term that is linear in $$z$$ before taking its gradient, and we need that term to have the $$\zcap$$ field component that is expected for a charge distribution that is non-symmetric about the origin on the z-axis!

### Finite line charge potential. Take II.

Let the point at which the potential is evaluated be

\label{eqn:lineCharge:360}
\Bx = \rho \rhocap + z \zcap,

and the charge point be
\label{eqn:lineCharge:380}
\Bx’ = z’ \zcap.

This gives

\label{eqn:lineCharge:400}
\begin{aligned}
\phi(\rho, z)
&= \frac{\lambda_0}{4\pi \epsilon_0} \int_a^b \frac{dz’}{\Abs{\rho^2 + (z – z’)^2 }} \\
&= \frac{\lambda_0}{4\pi \epsilon_0} \int_{a-z}^{b-z} \frac{du}{ \Abs{\rho^2 + u^2} } \\
&= \frac{\lambda_0}{4\pi \epsilon_0}
\evalrange{\ln \lr{ u + \sqrt{ \rho^2 + u^2 }}}{b-z}{a-z} \\
&=
\frac{\lambda_0}{4\pi \epsilon_0}
\ln \frac
{ b-z + \sqrt{ \rho^2 + (b-z)^2 }}
{ a-z + \sqrt{ \rho^2 + (a-z)^2 }}.
\end{aligned}

The limit of this potential $$a = -\Delta/2 \rightarrow -\infty, b = \Delta/2 \rightarrow \infty$$ doesn’t exist in any strict sense. If we are cavilier about the limits, as in \ref{eqn:lineCharge:200}, this can be evaluated as

\label{eqn:lineCharge:n}
\phi \approx
\frac{\lambda_0}{4\pi \epsilon_0} \lr{ -2 \ln \rho + \textrm{constant} }.

however, the constant ($$\ln \Delta^2/2$$) is infinite, so there isn’t really a good justification for using that constant as the potential reference point directly.

It seems that the “right” way to calculate the potential for the infinite distribution, is to

• Calculate the field from the potential.
• Take the PV limit of that field with the charge distribution extending to infinity.
• Compute the corresponding potential from this limiting value of the field.

Doing that doesn’t blow up. That field calculation, for the finite case, should include a $$\zcap$$ component. To verify, let’s take the respective derivatives

\label{eqn:lineCharge:420}
\begin{aligned}
-\PD{z}{} \phi
&=
-\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\frac{ -1 + \frac{z – b}{\sqrt{ \rho^2 + (b-z)^2 }} }{
b-z + \sqrt{ \rho^2 + (b-z)^2 }
}

\frac{ -1 + \frac{z – a}{\sqrt{ \rho^2 + (a-z)^2 }} }{
a-z + \sqrt{ \rho^2 + (a-z)^2 }
}
} \\
&=
\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\frac{ 1 + \frac{b – z}{\sqrt{ \rho^2 + (b-z)^2 }} }{
b-z + \sqrt{ \rho^2 + (b-z)^2 }
}

\frac{ 1 + \frac{a – z}{\sqrt{ \rho^2 + (a-z)^2 }} }{
a-z + \sqrt{ \rho^2 + (a-z)^2 }
}
} \\
&=
\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\inv{\sqrt{ \rho^2 + (b-z)^2 }}
-\inv{\sqrt{ \rho^2 + (a-z)^2 }}
},
\end{aligned}

and

\label{eqn:lineCharge:440}
\begin{aligned}
-\PD{\rho}{} \phi
&=
-\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\frac{ \frac{\rho}{\sqrt{ \rho^2 + (b-z)^2 }} }{
b-z + \sqrt{ \rho^2 + (b-z)^2 }
}

\frac{ \frac{\rho}{\sqrt{ \rho^2 + (a-z)^2 }} }{
a-z + \sqrt{ \rho^2 + (a-z)^2 }
}
} \\
&=
-\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\frac{\rho \lr{
-(b-z) + \sqrt{ \rho^2 + (b-z)^2 }
}}{ \rho^2 \sqrt{ \rho^2 + (b-z)^2 } }

\frac{\rho \lr{
-(a-z) + \sqrt{ \rho^2 + (a-z)^2 }
}}{ \rho^2 \sqrt{ \rho^2 + (a-z)^2 } }
} \\
&=
\frac{\lambda_0}{4\pi \epsilon_0 \rho}
\lr{
\frac{b-z}{\sqrt{ \rho^2 + (b-z)^2 }}
-\frac{a-z}{\sqrt{ \rho^2 + (a-z)^2 }}
}
.
\end{aligned}

Putting the pieces together, the electric field is
\label{eqn:lineCharge:460}
\BE =
\frac{\lambda_0}{4\pi \epsilon_0}
\lr{
\frac{\rhocap}{\rho} \lr{
\frac{b-z}{\sqrt{ \rho^2 + (b-z)^2 }}
-\frac{a-z}{\sqrt{ \rho^2 + (a-z)^2 }}
}
+
\zcap \lr{
\inv{\sqrt{ \rho^2 + (b-z)^2 }}
-\inv{\sqrt{ \rho^2 + (a-z)^2 }}
}
}.

For has a PV limit of \ref{eqn:lineCharge:40} at $$z = 0$$, and also for the finite case, has the $$\zcap$$ field component that was obtained when the field was obtained by direct integration.

### Conclusions

• We have to evaluate the potential at all points in space, not just on the axis that we evaluate the field on (should we choose to do so).
• In this case, we found that it was not directly meaningful to take the limit of a potential distribution. We can, however, compute the field from a potential for a finite charge distribution,
take the limit of that field, and then calculate the corresponding potential for the infinite distribution.

Is there a more robust mechanism that can be used to directly calculate the potential for an infinite charge distribution, instead of calculating the potential from the field of such an infinite distribution?

I think that were things go wrong is that the integral of \ref{eqn:lineCharge:180} does not apply to charge distributions that are not finite on the infinite range $$z \in [-\infty, \infty]$$. That solution was obtained by utilizing an all-space Green’s function, and the boundary term in that Green’s analysis was assumed to tend to zero. That isn’t the case when the charge distribution is $$\lambda_0 \delta( z )$$.

# References

[1] JD Jackson. Classical Electrodynamics. John Wiley and Sons, 2nd edition, 1975.

## using ltrace to dig into shared libraries

I was trying to find where the clang compiler is writing out constant global data values, and didn’t manage to find it by code inspection. If I run ltrace (also tracing system calls), I see the point where the ELF object is written out:

std::string::compare(std::string const&) const(0x7ffc8983a190, 0x1e32e60, 7, 254) = 5
std::string::compare(std::string const&) const(0x1e32e60, 0x7ffc8983a190, 7, 254) = 0xfffffffb
std::string::compare(std::string const&) const(0x7ffc8983a190, 0x1e32e60, 7, 254) = 5
write@SYS(4, "\177ELF\002\001\001", 848)         = 848
lseek@SYS(4, 40, 0)                              = 40
write@SYS(4, "\220\001", 8)                      = 8
lseek@SYS(4, 848, 0)                             = 848
lseek@SYS(4, 60, 0)                              = 60
write@SYS(4, "\a", 2)                            = 2
lseek@SYS(4, 848, 0)                             = 848
std::basic_string<char, std::char_traits<char>, std::allocator<char> >::~basic_string()(0x1e2a2e0, 0x1e2a2e8, 0x1e27978, 0x1e27978) = 0
close@SYS(4)                                     = 0


This is from running:

ltrace -S --demangle \
...


The -S is to display syscalls as well as library calls. To my suprise, this seems to show calls to libstdc++ library calls, but I’m not seeing much from clang itself, just:

clang::DiagnosticsEngine::DiagnosticsEngine
clang::driver::ToolChain::getTargetAndModeFromProgramName
llvm::cl::ExpandResponseFiles
llvm::EnablePrettyStackTrace
llvm::errs
llvm::install_fatal_error_handler
llvm::llvm_shutdown
llvm::PrettyStackTraceEntry::PrettyStackTraceEntry
llvm::PrettyStackTraceEntry::~PrettyStackTraceEntry
llvm::raw_ostream::preferred_buffer_size
llvm::raw_svector_ostream::write_impl
llvm::remove_fatal_error_handler
llvm::StringMapImpl::LookupBucketFor
llvm::StringMapImpl::RehashTable
llvm::sys::PrintStackTraceOnErrorSignal
llvm::sys::Process::FixupStandardFileDescriptors
llvm::sys::Process::GetArgumentVector
llvm::TimerGroup::printAll


There’s got to be a heck of a lot more that the compiler is doing!? It turns out that ltrace doesn’t seem to trace out all the library function calls that lie in shared libraries (I’m using a shared library + split dwarf build of clang). The default output was a bit deceptive since I saw some shared lib calls, in particular the there were std::… calls (from libstc++.so) in the ltrace output. My conclusion seems to be that the tool is lying by default.

This can be confirmed by explicitly asking to see the functions from a specific shared lib. For example, if I call ltrace as:

$ltrace -S --demangle -e @libLLVMX86CodeGen.so \ /clang/be.b226a0a/bin/clang-3.9 \ -cc1 \ -triple \ x86_64-unknown-linux-gnu \ ...  Now I get ~68K calls to libLLVMX86CodeGen.so functions that didn’t show up in the default ltrace output! The ltrace tool won’t show me these by default (although the man page seems to suggest that it should), but if I narrow down what I’m looking through to a single shared lib, at least I can now examine the function calls in that shared lib. ## On the SONAME Note that the @lib….so name has to match the SONAME. For example if the shared libraries on disk were: libLLVMX86CodeGen.so -> libLLVMX86CodeGen.so.3 libLLVMX86CodeGen.so.3 -> libLLVMX86CodeGen.so.3.9 libLLVMX86CodeGen.so.3.9 -> libLLVMX86CodeGen.so.3.9.0 $ objdump -x libLLVMX86CodeGen.so | grep SONAME


would give you the name to use.  This becomes relevant in clang 4.0 where the SONAME ends up with .so.4 instead of just .so (when building clang with shared libs instead of archive libs).

## Magnetostatic force and torque

In Jackson [1], the following equations for the vector potential, magnetostatic force and torque are derived

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:20}
\Bm = \inv{2} \int \Bx’ \cross \BJ(\Bx’) d^3 x’

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:40}
\BF = \spacegrad( \Bm \cdot \BB ),

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:60}
\BN = \Bm \cross \BB,

where $$\BB$$ is an applied external magnetic field and $$\Bm$$ is the magnetic dipole for the current in question. These results (and a similar one derived earlier for the vector potential $$\BA$$) all follow from
an analysis of localized current densities $$\BJ$$, evaluated far enough away from the current sources.

For the force and torque, the starting point for the force is one that had me puzzled a bit. Namely

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:80}
\BF = \int \BJ(\Bx) \cross \BB(\Bx) d^3 x

This is clearly the continuum generalization of the point particle Lorentz force equation, which for $$\BE = 0$$ is:

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:100}
\BF = q \Bv \cross \BB

For the point particle, this is the force on the particle when it is in the external field $$BB$$. i.e. this is the force at the position of the particle. My question is what does it mean to sum all the forces on the charge distribution over all space.
How can a force be applied over all, as opposed to a force applied at a single point, or against a surface?

In the special case of a localized current density, this makes some sense. Considering the other half of the force equation $$\BF = \ddt{}\int \rho_m \Bv dV$$, where $$\rho_m$$ here is mass density of the charged particles making up the continuous current distribution. The other half of this $$\BF = m\Ba$$ equation is also an average phenomena, so we have an average of sorts on both the field contribution to the force equation and the mass contribution to the force equation. There is probably a centre-of-mass and centre-of-current density interpretation that would make a bit more sense of this continuum force description.

It’s kind of funny how you can work through all the detailed mathematical steps in a book like Jackson, but then go right back to the beginning and say “Hey, what does that even mean”?

### Force

Moving on from the pondering of the meaning of the equation being manipulated, let’s do the easy part, the derivation of the results that Jackson comes up with.

Writing out \ref{eqn:magnetostaticsJacksonNotesForceAndTorque:80} in coordinates

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:320}
\BF = \epsilon_{ijk} \Be_i \int J_j B_k d^3 x.

To first order, a slowly varying (external) magnetic field can be expanded around a point of interest

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:120}
\BB(\Bx) = \BB(\Bx_0) + \lr{ \Bx – \Bx_0 } \cdot \spacegrad \BB,

where the directional derivative is evaluated at the point $$\Bx_0$$ after the gradient operation. Setting the origin at this point $$\Bx_0$$ gives

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:340}
\begin{aligned}
\BF
&= \epsilon_{ijk} \Be_i
\lr{
\int J_j(\Bx’) B_k(0) d^3 x’
+
\int J_j(\Bx’) (\Bx’ \cdot \spacegrad) B_k(0) d^3 x’
} \\
&=
\epsilon_{ijk} \Be_i
\Bk_0 \int J_j(\Bx’) d^3 x’
+
\epsilon_{ijk} \Be_i
\int J_j(\Bx’) (\Bx’ \cdot \spacegrad) B_k(0) d^3 x’.
\end{aligned}

We found

earlier
that the first integral can be written as a divergence

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:140}
\int J_j(\Bx’) d^3 x’
=
\int \spacegrad’ \cdot \lr{ \BJ(\Bx’) x_j’ } dV’,

which is zero when the integration surface is outside of the current localization region. We also found

that

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:160}
\int (\Bx \cdot \Bx’) \BJ
= -\inv{2} \Bx \cross \int \Bx’ \cross \BJ = \Bm \cross \Bx.

so
\label{eqn:magnetostaticsJacksonNotesForceAndTorque:180}
\begin{aligned}
\int (\spacegrad B_k(0) \cdot \Bx’) J_j
&= -\inv{2} \lr{ \spacegrad B_k(0) \cross \int \Bx’ \cross \BJ}_j \\
&= \lr{ \Bm \cross (\spacegrad B_k(0)) }_j.
\end{aligned}

This gives

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:200}
\begin{aligned}
\BF
&= \epsilon_{ijk} \Be_i \lr{ \Bm \cross (\spacegrad B_k(0)) }_j \\
&= \epsilon_{ijk} \Be_i \lr{ \Bm \cross \spacegrad }_j B_k(0) \\
&= (\Bm \cross \spacegrad) \cross \BB(0) \\
&= -\BB(0) \cross (\Bm \cross \lspacegrad) \\
\end{aligned}

The second term is killed by the magnetic Gauss’s law, leaving to first order

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:220}
\BF = \spacegrad \lr{\Bm \cdot \BB}.

### Torque

For the torque we have a similar quandary at the starting point. About what point is a continuum torque integral of the following form

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:240}
\BN = \int \Bx’ \cross (\BJ(\Bx’) \cross \BB(\Bx’)) d^3 x’?

Ignoring that detail again, assuming the answer has something to do with the centre of mass and parallel axis theorem, we can proceed with a constant approximation of the magnetic field

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:260}
\begin{aligned}
\BN
&= \int \Bx’ \cross (\BJ(\Bx’) \cross \BB(0)) d^3 x’ \\
&=
-\int (\Bx’ \cdot \BJ(\Bx’)) \BB(0) d^3 x’
+\int (\Bx’ \cdot \BB(0)) \BJ(\Bx’) d^3 x’ \\
&=
-\BB(0) \int (\Bx’ \cdot \BJ(\Bx’)) d^3 x’
+\int (\Bx’ \cdot \BB(0)) \BJ(\Bx’) d^3 x’.
\end{aligned}

Jackson’s trick for killing the first integral is to transform it into a divergence by evaluating

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:280}
\begin{aligned}
\spacegrad \cdot \lr{ \BJ \Abs{\Bx}^2 }
&=
+
&=
\BJ \cdot \Be_i \partial_i x_m x_m \\
&=
2 \BJ \cdot \Be_i \delta_{im} x_m \\
&=
2 \BJ \cdot \Bx,
\end{aligned}

so

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:300}
\begin{aligned}
\BN
&=
-\inv{2} \BB(0) \int \spacegrad’ \cdot \lr{ \BJ(\Bx’) \Abs{\Bx’}^2 } d^3 x’
+\int (\Bx’ \cdot \BB(0)) \BJ(\Bx’) d^3 x’ \\
&=
-\inv{2} \BB(0) \oint \Bn \cdot \lr{ \BJ(\Bx’) \Abs{\Bx’}^2 } d^3 x’
+\int (\Bx’ \cdot \BB(0)) \BJ(\Bx’) d^3 x’.
\end{aligned}

Again, the localized current density assumption kills the surface integral. The second integral can be evaluated with \ref{eqn:magnetostaticsJacksonNotesForceAndTorque:160}, so to first order we have

\label{eqn:magnetostaticsJacksonNotesForceAndTorque:360}
\BN
=
\Bm \cross \BB.

# References

[1] JD Jackson. Classical Electrodynamics. John Wiley and Sons, 2nd edition, 1975.

## Interesting tidbits in a Hillary Goldman Sacks wikileaks transcript.

Here’s some notes on a read of the first of the wikileaks transcripts of the Hillary Goldman Sacks talks.  There are three transcripts in total:

The main takeaway is that the State deptartment role is certainly not about diplomacy.  There’s lots of mentions of stirring up crap as part of the routine game.  Chaos is a desired end goal, so long as it’s controlled or directed.

page 7: North Korea:

We don’t want the North Koreans to
cause more trouble than the system can absorb. So
we’ve got a pretty good thing going with the

What an interesting statement.  The corollary seems to be that they do want North Korea to be stirring up trouble.  It serves to distract and limit China for example, a point made in other parts of the speech.

page 13: Syria:

So the problem for the US and the
Europeans has been from the very beginning: What
is it you — who is it you are going to try to arm?
And you probably read in the papers my view was we
should try to find some of the groups that were
there that we thought we could build relationships
with and develop some covert connections that might
then at least give us some insight into what is
going on inside Syria.

It is well known now that the US has been arming the “Free Syrian Army”, funnelling weapons in through Turkey via the Saudis.  Here Hillary is discussing exactly this process.  She actually expresses regret that the US isn’t as good at this discrete covert warmongering as they used to be.

page 14: Libya:

In Libya we didn’t have that problem.
It’s a huge place. The air defenses were not that
sophisticated and there wasn’t very — in fact,
there were very few civilian casualties.

A psychopath in action.  I hear of Hillary’s carpet bombing of Libya discussed as one of the most brutal and destructive campaigns in near history, and she describes it as “very few casualties”.  I don’t actually know the numbers, but it’s certainly interesting to see how casual she is with respect to the death of civilians.

page 15: on Iran? (or perhaps Syria):

Well, you up the pain
that they have to endure by not in any way
occupying or invading them but by bombing their
facilities. I mean, that is the option. It is not
as, we like to say these days, boots on the ground.

Causal talk of bombing other countries is so disgusting.  Notice how the word facilities is very vague.  Decoding this a bit, if you are simultaneously talking about “upping the pain” and bombing facilities, this is probably theorizing about bombing targets that have the most terror inducing and hardship effects on the civilians (water processing, energy production, schools, hospitals, …).  But that’s okay so long as it isn’t perceived as “boots on the ground”.

page 36: Russia:

And finally on Afghanistan and Russia.
Look, I would love it if we could continue to build
a more positive relationship with Russia. I worked
very hard on that when I was Secretary, and we made
some progress with Medvedev, who was president in
name but was obviously beholden to Putin, but Putin
kind of let him go and we helped them get into the
WTO for several years, and they were helpful to us
in shipping equipment, even lethal equipment, in
and out of out of Afghanistan.

Russia was a useful ally when they helped with covert wars.  Now that those covert wars are knocking on Russia’s door, the relationship has soured.  It’s hard to imagine why that relationship has deteriorated.

## Vector Area

One of the results of this problem is required for a later one on magnetic moments that I’d like to do.

## Question: Vector Area. ([1] pr. 1.61)

The integral

\label{eqn:vectorAreaGriffiths:20}
\Ba = \int_S d\Ba,

is sometimes called the vector area of the surface $$S$$.

## (a)

Find the vector area of a hemispherical bowl of radius $$R$$.

## (b)

Show that $$\Ba = 0$$ for any closed surface.

## (c)

Show that $$\Ba$$ is the same for all surfaces sharing the same boundary.

## (d)

Show that
\label{eqn:vectorAreaGriffiths:40}
\Ba = \inv{2} \oint \Br \cross d\Bl,

where the integral is around the boundary line.

## (e)

Show that
\label{eqn:vectorAreaGriffiths:60}
\oint \lr{ \Bc \cdot \Br } d\Bl = \Ba \cross \Bc.

## (a)

\label{eqn:vectorAreaGriffiths:80}
\begin{aligned}
\Ba
&=
\int_{0}^{\pi/2} R^2 \sin\theta d\theta \int_0^{2\pi} d\phi
\lr{ \sin\theta \cos\phi, \sin\theta \sin\phi, \cos\theta } \\
&=
R^2 \int_{0}^{\pi/2} d\theta \int_0^{2\pi} d\phi
\lr{ \sin^2\theta \cos\phi, \sin^2\theta \sin\phi, \sin\theta\cos\theta } \\
&=
2 \pi R^2 \int_{0}^{\pi/2} d\theta \Be_3
\sin\theta\cos\theta \\
&=
\pi R^2
\Be_3
\int_{0}^{\pi/2} d\theta
\sin(2 \theta) \\
&=
\pi R^2
\Be_3
\evalrange{\lr{\frac{-\cos(2 \theta)}{2}}}{0}{\pi/2} \\
&=
\pi R^2
\Be_3
\lr{ 1 – (-1) }/2 \\
&=
\pi R^2
\Be_3.
\end{aligned}

## (b)

As hinted in the original problem description, this follows from

\label{eqn:vectorAreaGriffiths:100}
\int dV \spacegrad T = \oint T d\Ba,

simply by setting $$T = 1$$.

## (c)

Suppose that two surfaces sharing a boundary are parameterized by vectors $$\Bx(u, v), \Bx(a,b)$$ respectively. The area integral with the first parameterization is

\label{eqn:vectorAreaGriffiths:120}
\begin{aligned}
\Ba
&= \int \PD{u}{\Bx} \cross \PD{v}{\Bx} du dv \\
&= \epsilon_{ijk} \Be_i \int \PD{u}{x_j} \PD{v}{x_k} du dv \\
&=
\epsilon_{ijk} \Be_i \int
\lr{
\PD{a}{x_j}
\PD{u}{a}
+
\PD{b}{x_j}
\PD{u}{b}
}
\lr{
\PD{a}{x_k}
\PD{v}{a}
+
\PD{b}{x_k}
\PD{v}{b}
}
du dv \\
&=
\epsilon_{ijk} \Be_i \int
du dv
\lr{
\PD{a}{x_j}
\PD{u}{a}
\PD{a}{x_k}
\PD{v}{a}
+
\PD{b}{x_j}
\PD{u}{b}
\PD{b}{x_k}
\PD{v}{b}
+
\PD{b}{x_j}
\PD{u}{b}
\PD{a}{x_k}
\PD{v}{a}
+
\PD{a}{x_j}
\PD{u}{a}
\PD{b}{x_k}
\PD{v}{b}
} \\
&=
\epsilon_{ijk} \Be_i \int
du dv
\lr{
\PD{a}{x_j}
\PD{a}{x_k}
\PD{u}{a}
\PD{v}{a}
+
\PD{b}{x_j}
\PD{b}{x_k}
\PD{u}{b}
\PD{v}{b}
}
+
\epsilon_{ijk} \Be_i \int
du dv
\lr{
\PD{b}{x_j}
\PD{a}{x_k}
\PD{u}{b}
\PD{v}{a}

\PD{a}{x_k}
\PD{b}{x_j}
\PD{u}{a}
\PD{v}{b}
}.
\end{aligned}

In the last step a $$j,k$$ index swap was performed for the last term of the second integral. The first integral is zero, since the integrand is symmetric in $$j,k$$. This leaves
\label{eqn:vectorAreaGriffiths:140}
\begin{aligned}
\Ba
&=
\epsilon_{ijk} \Be_i \int
du dv
\lr{
\PD{b}{x_j}
\PD{a}{x_k}
\PD{u}{b}
\PD{v}{a}

\PD{a}{x_k}
\PD{b}{x_j}
\PD{u}{a}
\PD{v}{b}
} \\
&=
\epsilon_{ijk} \Be_i \int
\PD{b}{x_j}
\PD{a}{x_k}
\lr{
\PD{u}{b}
\PD{v}{a}

\PD{u}{a}
\PD{v}{b}
}
du dv \\
&=
\epsilon_{ijk} \Be_i \int
\PD{b}{x_j}
\PD{a}{x_k}
\frac{\partial(b,a)}{\partial(u,v)} du dv \\
&=
-\int
\PD{b}{\Bx} \cross \PD{a}{\Bx} da db \\
&=
\int
\PD{a}{\Bx} \cross \PD{b}{\Bx} da db.
\end{aligned}

However, this is the area integral with the second parameterization, proving that the area-integral for any given boundary is independant of the surface.

## (d)

Having proven that the area-integral for a given boundary is independent of the surface that it is evaluated on, the result follows by illustration as hinted in the full problem description. Draw a “cone”, tracing a vector $$\Bx’$$ from the origin to the position line element, and divide that cone up into infinitesimal slices as sketched in fig. 1.

Fig 1. Cone subtended by loop

The area of each of these triangular slices is

\label{eqn:vectorAreaGriffiths:160}
\inv{2} \Bx’ \cross d\Bl’.

Summing those triangles proves the result.

## (e)

As hinted in the problem, this follows from

\label{eqn:vectorAreaGriffiths:180}
\int \spacegrad T \cross d\Ba = -\oint T d\Bl.

Set $$T = \Bc \cdot \Br$$, for which

\label{eqn:vectorAreaGriffiths:240}
\begin{aligned}
&= \Be_k \partial_k c_m x_m \\
&= \Be_k c_m \delta_{km} \\
&= \Be_k c_k \\
&= \Bc,
\end{aligned}

so
\label{eqn:vectorAreaGriffiths:200}
\begin{aligned}
&=
\int \Bc \cross d\Ba \\
&=
\Bc \cross \int d\Ba \\
&=
\Bc \cross \Ba.
\end{aligned}

so
\label{eqn:vectorAreaGriffiths:220}
\Bc \cross \Ba = -\oint (\Bc \cdot \Br) d\Bl,

or
\label{eqn:vectorAreaGriffiths:260}
\oint (\Bc \cdot \Br) d\Bl
=
\Ba \cross \Bc.

# References

[1] David Jeffrey Griffiths and Reed College. Introduction to electrodynamics. Prentice hall Upper Saddle River, NJ, 3rd edition, 1999.

## Magnetic moment for a localized magnetostatic current

### Motivation.

I was once again reading my Jackson [2]. This time I found that his presentation of magnetic moment didn’t really make sense to me. Here’s my own pass through it, filling in a number of details. As I did last time, I’ll also translate into SI units as I go.

### Vector potential.

The Biot-Savart expression for the magnetic field can be factored into a curl expression using the usual tricks

\label{eqn:magneticMomentJackson:20}
\begin{aligned}
\BB
&= \frac{\mu_0}{4\pi} \int \frac{\BJ(\Bx’) \cross (\Bx – \Bx’)}{\Abs{\Bx – \Bx’}^3} d^3 x’ \\
&= -\frac{\mu_0}{4\pi} \int \BJ(\Bx’) \cross \spacegrad \inv{\Abs{\Bx – \Bx’}} d^3 x’ \\
&= \frac{\mu_0}{4\pi} \spacegrad \cross \int \frac{\BJ(\Bx’)}{\Abs{\Bx – \Bx’}} d^3 x’,
\end{aligned}

so the vector potential, through its curl, defines the magnetic field $$\BB = \spacegrad \cross \BA$$ is given by

\label{eqn:magneticMomentJackson:40}
\BA(\Bx) = \frac{\mu_0}{4 \pi} \int \frac{J(\Bx’)}{\Abs{\Bx – \Bx’}} d^3 x’.

If the current source is localized (zero outside of some finite region), then there will always be a region for which $$\Abs{\Bx} \gg \Abs{\Bx’}$$, so the denominator yields to Taylor expansion

\label{eqn:magneticMomentJackson:60}
\begin{aligned}
\inv{\Abs{\Bx – \Bx’}}
&=
\inv{\Abs{\Bx}} \lr{1 + \frac{\Abs{\Bx’}^2}{\Abs{\Bx}^2} – 2 \frac{\Bx \cdot \Bx’}{\Abs{\Bx}^2} }^{-1/2} \\
&\approx
\inv{\Abs{\Bx}} \lr{ 1 + \frac{\Bx \cdot \Bx’}{\Abs{\Bx}^2} } \\
&=
\inv{\Abs{\Bx}} + \frac{\Bx \cdot \Bx’}{\Abs{\Bx}^3}.
\end{aligned}

so the vector potential, far enough away from the current source is
\label{eqn:magneticMomentJackson:80}
\BA(\Bx)
=
\frac{\mu_0}{4 \pi} \int \frac{J(\Bx’)}{\Abs{\Bx}} d^3 x’
+\frac{\mu_0}{4 \pi} \int \frac{(\Bx \cdot \Bx’)J(\Bx’)}{\Abs{\Bx}^3} d^3 x’.

Jackson uses a sneaky trick to show that the first integral is killed for a localized source. That trick appears to be based on evaluating the following divergence

\label{eqn:magneticMomentJackson:100}
\begin{aligned}
&=
+
&=
(\Be_k \partial_k x_i) \cdot\BJ \\
&=
\delta_{ki} J_k \\
&=
J_i.
\end{aligned}

Note that this made use of the fact that $$\spacegrad \cdot \BJ = 0$$ for magnetostatics. This provides a way to rewrite the current density as a divergence

\label{eqn:magneticMomentJackson:120}
\begin{aligned}
\int \frac{J(\Bx’)}{\Abs{\Bx}} d^3 x’
&=
\Be_i \int \frac{\spacegrad’ \cdot (x_i’ \BJ(\Bx’))}{\Abs{\Bx}} d^3 x’ \\
&=
\frac{\Be_i}{\Abs{\Bx}} \int \spacegrad’ \cdot (x_i’ \BJ(\Bx’)) d^3 x’ \\
&=
\frac{1}{\Abs{\Bx}} \oint \Bx’ (d\Ba \cdot \BJ(\Bx’)).
\end{aligned}

When $$\BJ$$ is localized, this is zero provided we pick the integration surface for the volume outside of that localization region.

It is now desired to rewrite $$\int \Bx \cdot \Bx’ \BJ$$ as a triple cross product since the dot product of such a triple cross product has exactly this term in it

\label{eqn:magneticMomentJackson:140}
\begin{aligned}
– \Bx \cross \int \Bx’ \cross \BJ
&=
\int (\Bx \cdot \Bx’) \BJ

\int (\Bx \cdot \BJ) \Bx’ \\
&=
\int (\Bx \cdot \Bx’) \BJ

\Be_k x_i \int J_i x_k’,
\end{aligned}

so
\label{eqn:magneticMomentJackson:160}
\int (\Bx \cdot \Bx’) \BJ
=
– \Bx \cross \int \Bx’ \cross \BJ
+
\Be_k x_i \int J_i x_k’.

To get of this second term, the next sneaky trick is to consider the following divergence

\label{eqn:magneticMomentJackson:180}
\begin{aligned}
\oint d\Ba’ \cdot (\BJ(\Bx’) x_i’ x_j’)
&=
\int dV’ \spacegrad’ \cdot (\BJ(\Bx’) x_i’ x_j’) \\
&=
+
\int dV’ \BJ \cdot \spacegrad’ (x_i’ x_j’) \\
&=
\int dV’ J_k \cdot \lr{ x_i’ \partial_k x_j’ + x_j’ \partial_k x_i’ } \\
&=
\int dV’ \lr{J_k x_i’ \delta_{kj} + J_k x_j’ \delta_{ki}} \\
&=
\int dV’ \lr{J_j x_i’ + J_i x_j’}.
\end{aligned}

The surface integral is once again zero, which means that we have an antisymmetric relationship in integrals of the form

\label{eqn:magneticMomentJackson:200}
\int J_j x_i’ = -\int J_i x_j’.

Now we can use the tensor algebra trick of writing $$y = (y + y)/2$$,

\label{eqn:magneticMomentJackson:220}
\begin{aligned}
\int (\Bx \cdot \Bx’) \BJ
&=
– \Bx \cross \int \Bx’ \cross \BJ
+
\Be_k x_i \int J_i x_k’ \\
&=
– \Bx \cross \int \Bx’ \cross \BJ
+
\inv{2} \Be_k x_i \int \lr{ J_i x_k’ + J_i x_k’ } \\
&=
– \Bx \cross \int \Bx’ \cross \BJ
+
\inv{2} \Be_k x_i \int \lr{ J_i x_k’ – J_k x_i’ } \\
&=
– \Bx \cross \int \Bx’ \cross \BJ
+
\inv{2} \Be_k x_i \int (\BJ \cross \Bx’)_j \epsilon_{ikj} \\
&=
– \Bx \cross \int \Bx’ \cross \BJ

\inv{2} \epsilon_{kij} \Be_k x_i \int (\BJ \cross \Bx’)_j \\
&=
– \Bx \cross \int \Bx’ \cross \BJ

\inv{2} \Bx \cross \int \BJ \cross \Bx’ \\
&=
– \Bx \cross \int \Bx’ \cross \BJ
+
\inv{2} \Bx \cross \int \Bx’ \cross \BJ \\
&=
-\inv{2} \Bx \cross \int \Bx’ \cross \BJ,
\end{aligned}

so

\label{eqn:magneticMomentJackson:240}
\BA(\Bx) \approx \frac{\mu_0}{4 \pi \Abs{\Bx}^3} \lr{ -\frac{\Bx}{2} } \int \Bx’ \cross \BJ(\Bx’) d^3 x’.

Letting

\label{eqn:magneticMomentJackson:260}
\boxed{
\Bm = \inv{2} \int \Bx’ \cross \BJ(\Bx’) d^3 x’,
}

the far field approximation of the vector potential is
\label{eqn:magneticMomentJackson:280}
\boxed{
\BA(\Bx) = \frac{\mu_0}{4 \pi} \frac{\Bm \cross \Bx}{\Abs{\Bx}^3}.
}

Note that when the current is restricted to an infintisimally thin loop, the magnetic moment reduces to

\label{eqn:magneticMomentJackson:300}
\Bm(\Bx) = \frac{I}{2} \int \Bx \cross d\Bl’.

Refering to [1] (pr. 1.60), this can be seen to be $$I$$ times the “vector-area” integral.

# References

[1] David Jeffrey Griffiths and Reed College. Introduction to electrodynamics. Prentice hall Upper Saddle River, NJ, 3rd edition, 1999.

[2] JD Jackson. Classical Electrodynamics. John Wiley and Sons, 2nd edition, 1975.

## Corollaries to Stokes and Divergence theorems

In [1] a few problems are set to prove some variations of Stokes theorem. He gives some cool tricks to prove each one using just the classic 3D Stokes and divergence theorems. We can also do them directly from the more general Stokes theorem $$\int d^k \Bx \cdot (\spacegrad \wedge F) = \oint d^{k-1} \Bx \cdot F$$.

## Question: Stokes theorem on scalar function. ([1] pr. 1.60a)

Prove
\label{eqn:stokesCorollariesGriffiths:20}
\int \spacegrad T dV = \oint T d\Ba.

The direct way to prove this is to apply Stokes theorem

\label{eqn:stokesCorollariesGriffiths:80}
\int d^3 \Bx \cdot (\spacegrad \wedge T) = \oint d^2 \Bx \cdot T

Here $$d^3 \Bx = d\Bx_1 \wedge d\Bx_2 \wedge d\Bx_3$$, a pseudoscalar (trivector) volume element, and the wedge and dot products take their most general meanings. For $$k$$-blade $$F$$, and $$k’$$-blade $$F’$$, that is

\label{eqn:stokesCorollariesGriffiths:100}
\begin{aligned}
F \wedge F’ &= \gpgrade{F F’}{k+k’} \\
F \cdot F’ &= \gpgrade{F F’}{\Abs{k-k’}}
\end{aligned}

With $$d^3\Bx = I dV$$, and $$d^2 \Bx = I \ncap dA = I d\Ba$$, we have

\label{eqn:stokesCorollariesGriffiths:120}
\int I dV \spacegrad T = \oint I d\Ba T.

Cancelling the factors of $$I$$ proves the result.

Griffith’s trick to do this was to let $$\Bv = \Bc T$$, where $$\Bc$$ is a constant. For this, the divergence theorem integral is

\label{eqn:stokesCorollariesGriffiths:160}
\begin{aligned}
\int dV \spacegrad \cdot (\Bc T)
&=
\int dV \Bc \cdot \spacegrad T \\
&=
\Bc \cdot \int dV \spacegrad T \\
&=
\oint d\Ba \cdot (\Bc T) \\
&=
\Bc \cdot \oint d\Ba T.
\end{aligned}

This is true for any constant $$\Bc$$, so is also true for the unit vectors. This allows for summing projections in each of the unit directions

\label{eqn:stokesCorollariesGriffiths:180}
\begin{aligned}
&=
\sum \Be_k \lr{ \Be_k \cdot \int dV \spacegrad T } \\
&=
\sum \Be_k \lr{ \Be_k \cdot \oint d\Ba T } \\
&=
\oint d\Ba T.
\end{aligned}

## Question: ([1] pr. 1.60b)

Prove
\label{eqn:stokesCorollariesGriffiths:40}
\int \spacegrad \cross \Bv dV = -\oint \Bv \cross d\Ba.

This also follows directly from the general Stokes theorem

\label{eqn:stokesCorollariesGriffiths:200}
\int d^3 \Bx \cdot \lr{ \spacegrad \wedge \Bv } = \oint d^2 \Bx \cdot \Bv

The volume integrand is

\label{eqn:stokesCorollariesGriffiths:220}
\begin{aligned}
d^3 \Bx \cdot \lr{ \spacegrad \wedge \Bv }
&=
&=
\end{aligned}

and the surface integrand is
\label{eqn:stokesCorollariesGriffiths:240}
\begin{aligned}
d^2 \Bx \cdot \Bv
&=
\gpgradeone{ I d\Ba \Bv } \\
&=
\gpgradeone{ I (d\Ba \wedge \Bv) } \\
&=
I^2 (d\Ba \cross \Bv) \\
&=
-d\Ba \cross \Bv \\
&=
\Bv \cross d\Ba.
\end{aligned}

Plugging these into \ref{eqn:stokesCorollariesGriffiths:200} proves the result.

Griffiths trick for the same is to apply the divergence theorem to $$\Bv \cross \Bc$$. Such a volume integral is

\label{eqn:stokesCorollariesGriffiths:260}
\begin{aligned}
\int dV \spacegrad \cdot (\Bv \cross \Bc)
&=
\int dV \Bc \cdot (\spacegrad \cross \Bv) \\
&=
\Bc \cdot \int dV \spacegrad \cross \Bv.
\end{aligned}

This must equal
\label{eqn:stokesCorollariesGriffiths:280}
\begin{aligned}
\oint d\Ba \cdot (\Bv \cross \Bc)
&=
\Bc \cdot \oint d\Ba \cross \Bv \\
&=
-\Bc \cdot \oint \Bv \cross d\Ba
\end{aligned}

Again, assembling projections, we have
\label{eqn:stokesCorollariesGriffiths:300}
\begin{aligned}
&=
\sum \Be_k \lr{ \Be_k \cdot \int dV \spacegrad \cross \Bv } \\
&=
-\sum \Be_k \lr{ \Be_k \cdot \oint \Bv \cross d\Ba } \\
&=
-\oint \Bv \cross d\Ba.
\end{aligned}

## Question: ([1] pr. 1.60e)

Prove
\label{eqn:stokesCorollariesGriffiths:60}
\int \spacegrad T \cross d\Ba = -\oint T d\Bl.

This one follows from
\label{eqn:stokesCorollariesGriffiths:320}
\int d^2 \Bx \cdot \lr{ \spacegrad \wedge T } = \oint d^1 \Bx \cdot T.

The surface integrand can be written
\label{eqn:stokesCorollariesGriffiths:340}
\begin{aligned}
d^2 \Bx \cdot \lr{ \spacegrad \wedge T }
&=
&=
I (d\Ba \wedge \spacegrad T ) \\
&=
I^2 ( d\Ba \cross \spacegrad T ) \\
&=
\end{aligned}

The line integrand is

\label{eqn:stokesCorollariesGriffiths:360}
d^1 \Bx \cdot T = d^1 \Bx T.

Given a two parameter representation of the surface area element $$d^2 \Bx = d\Bx_1 \wedge d\Bx_2$$, the line element representation is
\label{eqn:stokesCorollariesGriffiths:380}
\begin{aligned}
d^1 \Bx
&= (\Bx_1 \wedge d\Bx_2) \cdot \Bx^1 + (d\Bx_1 \wedge \Bx_2) \cdot \Bx^2 \\
&= -d\Bx_2 + d\Bx_1,
\end{aligned}

giving

\label{eqn:stokesCorollariesGriffiths:400}
\begin{aligned}
&=
\int
-\evalbar{\lr{ \PD{u_2}{\Bx} T }}{\Delta u_1} du_2
+\evalbar{\lr{ \PD{u_1}{\Bx} T }}{\Delta u_2} du_1 \\
&=
-\oint d\Bl T,
\end{aligned}

or
\label{eqn:stokesCorollariesGriffiths:420}
=
-\oint d\Bl T.

Griffiths trick for the same is to use $$\Bv = \Bc T$$ for constant $$\Bc$$ in (the usual 3D) Stokes’ theorem. That is

\label{eqn:stokesCorollariesGriffiths:440}
\begin{aligned}
\int d\Ba \cdot (\spacegrad \cross (\Bc T))
&=
\Bc \cdot \int d\Ba \cross \spacegrad T \\
&=
-\Bc \cdot \int \spacegrad T \cross d\Ba \\
&=
\oint d\Bl \cdot (\Bc T) \\
&=
\Bc \cdot \oint d\Bl T.
\end{aligned}

Again assembling projections we have
\label{eqn:stokesCorollariesGriffiths:460}
\begin{aligned}
&=
\sum \Be_k \lr{ \Be_k \cdot \int \spacegrad T \cross d\Ba} \\
&=
-\sum \Be_k \lr{ \Be_k \cdot \oint d\Bl T } \\
&=
-\oint d\Bl T.
\end{aligned}

# References

[1] David Jeffrey Griffiths and Reed College. Introduction to electrodynamics. Prentice hall Upper Saddle River, NJ, 3rd edition, 1999.

## Jackson’s electrostatic self energy analysis

### Motivation

I was reading my Jackson [1], which characteristically had the statement “the […] integral can easily be shown to have the value $$4 \pi$$”, in a discussion of electrostatic energy and self energy. After a few attempts and a couple of pages of calculations, I figured out how this can be easily shown.

### Context

Let me walk through the context that leads to the “easy” integral, and then the evaluation of that integral. Unlike my older copy of Jackson, I’ll do this in SI units.

The starting point is a statement that the work done (potential energy) of one charge $$q_i$$ in a set of $$n$$ charges, where that charge is brought to its position $$\Bx_i$$ from infinity, is

\label{eqn:electrostaticJacksonSelfEnergy:20}
W_i = q_i \Phi(\Bx_i),

where the potential energy due to the rest of the charge configuration is

\label{eqn:electrostaticJacksonSelfEnergy:40}
\Phi(\Bx_i) = \inv{4 \pi \epsilon} \sum_{i \ne j} \frac{q_j}{\Abs{\Bx_i – \Bx_j}}.

This means that the total potential energy, making sure not to double count, to move all the charges in from infinity is

\label{eqn:electrostaticJacksonSelfEnergy:60}
W = \inv{4 \pi \epsilon} \sum_{1 \le i < j \le n} \frac{q_i q_j}{\Abs{\Bx_i - \Bx_j}}. This sum over all unique pairs is somewhat unwieldy, so it can be adjusted by explicitly double counting with a corresponding divide by two $$\label{eqn:electrostaticJacksonSelfEnergy:80} W = \inv{2} \inv{4 \pi \epsilon} \sum_{1 \le i \ne j \le n} \frac{q_i q_j}{\Abs{\Bx_i - \Bx_j}}.$$ The point that causes the trouble later is the continuum equivalent to this relationship, which is $$\label{eqn:electrostaticJacksonSelfEnergy:100} W = \inv{8 \pi \epsilon} \int \frac{\rho(\Bx) \rho(\Bx')}{\Abs{\Bx - \Bx'}} d^3 \Bx d^3 \Bx',$$ or $$\label{eqn:electrostaticJacksonSelfEnergy:120} W = \inv{2} \int \rho(\Bx) \Phi(\Bx) d^3 \Bx.$$ There's a subtlety here that is often passed over. When the charge densities represent point charges $$\rho(\Bx) = q \delta^3(\Bx - \Bx')$$ are located at, notice that this integral equivalent is evaluated over all space, including the spaces that the charges that the charges are located at. Ignoring that subtlety, this potential energy can be expressed in terms of the electric field, and then integrated by parts \label{eqn:electrostaticJacksonSelfEnergy:140} \begin{aligned} W &= \inv{2 } \int (\spacegrad \cdot (\epsilon \BE)) \Phi(\Bx) d^3 \Bx \\ &= \frac{\epsilon}{2 } \int \lr{ \spacegrad \cdot (\BE \Phi) - (\spacegrad \Phi) \cdot \BE } d^3 \Bx \\ &= \frac{\epsilon}{2 } \oint dA \ncap \cdot (\BE \Phi) + \frac{\epsilon}{2 } \int \BE \cdot \BE d^3 \Bx. \end{aligned} The presumption is that $$\BE \Phi$$ falls off as the bounds of the integration volume tends to infinity. That leaves us with an energy density proportional to the square of the field $$\label{eqn:electrostaticJacksonSelfEnergy:160} w = \frac{\epsilon}{2 } \BE^2.$$

### Inconsistency

It’s here that Jackson points out the inconsistency between \ref{eqn:electrostaticJacksonSelfEnergy:160} and the original
discrete analogue \ref{eqn:electrostaticJacksonSelfEnergy:80} that this was based on. The energy density is positive definite, whereas the discrete potential energy can be negative if there is a difference in the sign of the charges.

Here Jackson uses a two particle charge distribution to help resolve this conundrum. For a superposition $$\BE = \BE_1 + \BE_2$$, we have

\label{eqn:electrostaticJacksonSelfEnergy:180}
\BE
=
\inv{4 \pi \epsilon} \frac{q_1 (\Bx – \Bx_1)}{\Abs{\Bx – \Bx_1}^3}
+ \inv{4 \pi \epsilon} \frac{q_2 (\Bx – \Bx_2)}{\Abs{\Bx – \Bx_2}^3},

so the energy density is
\label{eqn:electrostaticJacksonSelfEnergy:200}
w =
\frac{1}{32 \pi^2 \epsilon} \frac{q_1^2}{\Abs{\Bx – \Bx_1}^4 }
+
\frac{1}{32 \pi^2 \epsilon} \frac{q_2^2}{\Abs{\Bx – \Bx_2}^4 }
+
2 \frac{q_1 q_2}{32 \pi^2 \epsilon}
\frac{(\Bx – \Bx_1)}{\Abs{\Bx – \Bx_1}^3} \cdot
\frac{(\Bx – \Bx_2)}{\Abs{\Bx – \Bx_2}^3}.

The discrete potential had only an interaction energy, whereas the potential from this squared field has an interaction energy plus two self energy terms. Those two strictly positive self energy terms are what forces this field energy positive, independent of the sign of the interaction energy density. Jackson makes a change of variables of the form

\label{eqn:electrostaticJacksonSelfEnergy:220}
\begin{aligned}
\Brho &= (\Bx – \Bx_1)/R \\
R &= \Abs{\Bx_1 – \Bx_2} \\
\ncap &= (\Bx_1 – \Bx_2)/R,
\end{aligned}

for which we find

\label{eqn:electrostaticJacksonSelfEnergy:240}
\Bx = \Bx_1 + R \Brho,

so
\label{eqn:electrostaticJacksonSelfEnergy:260}
\Bx – \Bx_2 =
\Bx_1 – \Bx_2 + R \Brho
R (\ncap + \Brho),

and
\label{eqn:electrostaticJacksonSelfEnergy:280}
d^3 \Bx = R^3 d^3 \Brho,

so the total interaction energy is
\label{eqn:electrostaticJacksonSelfEnergy:300}
\begin{aligned}
W_{\textrm{int}}
&=
\frac{q_1 q_2}{16 \pi^2 \epsilon}
\int d^3 \Bx
\frac{(\Bx – \Bx_1)}{\Abs{\Bx – \Bx_1}^3} \cdot
\frac{(\Bx – \Bx_2)}{\Abs{\Bx – \Bx_2}^3} \\
&=
\frac{q_1 q_2}{16 \pi^2 \epsilon}
\int R^3 d^3 \Brho
\frac{ R \Brho }{ R^3 \Abs{\Brho}^3 } \cdot
\frac{R (\ncap + \Brho)}{R^3 \Abs{\ncap + \Brho}^3} \\
&=
\frac{q_1 q_2}{16 \pi^2 \epsilon R}
\int d^3 \Brho
\frac{ \Brho }{ \Abs{\Brho}^3 } \cdot
\frac{(\ncap + \Brho)}{ \Abs{\ncap + \Brho}^3}.
\end{aligned}

Evaluating this integral is what Jackson calls easy. The technique required is to express the integrand in terms of gradients in the $$\Brho$$ coordinate system

\label{eqn:electrostaticJacksonSelfEnergy:320}
\begin{aligned}
\int d^3 \Brho
\frac{ \Brho }{ \Abs{\Brho}^3 } \cdot
\frac{(\ncap + \Brho)}{ \Abs{\ncap + \Brho}^3}
&=
\int d^3 \Brho
\cdot
\lr{ – \spacegrad_\Brho \inv{\Abs{\ncap + \Brho}} } \\
&=
\int d^3 \Brho
\cdot
\lr{ \spacegrad_\Brho \inv{\Abs{\ncap + \Brho}} }.
\end{aligned}

I found it somewhat non-trivial to find the exact form of the chain rule that is required to simplify this integral, but after some trial and error, figured it out by working backwards from
\label{eqn:electrostaticJacksonSelfEnergy:340}
\spacegrad_\Brho^2 \inv{ \Abs{\Brho} \Abs{\ncap + \Brho}}
=
+

In integral form this is
\label{eqn:electrostaticJacksonSelfEnergy:360}
\begin{aligned}
\oint dA’ \ncap’ \cdot \spacegrad_\Brho \inv{ \Abs{\Brho} \Abs{\ncap + \Brho}}
&=
\int d^3 \Brho’
+
\int d^3 \Brho
\spacegrad_\Brho \cdot \lr{ \inv{\Abs{\ncap + \Brho}} \spacegrad_\Brho \inv{ \Abs{\Brho} } } \\
&=
\int d^3 \Brho’
\lr{ \spacegrad_{\Brho’} \inv{\Abs{\Brho’ – \ncap} } \cdot \spacegrad_{\Brho’} \inv{ \Abs{\Brho’} } }
+
\int d^3 \Brho’
\inv{\Abs{\Brho’ – \ncap}} \spacegrad_{\Brho’}^2 \inv{ \Abs{\Brho’} } \\
&+
\int d^3 \Brho
+
\int d^3 \Brho
\inv{\Abs{\ncap + \Brho}} \spacegrad_\Brho^2 \inv{ \Abs{\Brho} } \\
&=
2 \int d^3 \Brho
&- 4 \pi
\int d^3 \Brho’
\inv{\Abs{\Brho’ – \ncap}} \delta^3(\Brho’)
– 4 \pi
\int d^3 \Brho
\inv{\Abs{\Brho + \ncap}} \delta^3(\Brho) \\
&=
2 \int d^3 \Brho
– 8 \pi.
\end{aligned}

This used the Laplacian representation of the delta function $$\delta^3(\Bx) = -(1/4\pi) \spacegrad^2 (1/\Abs{\Bx})$$. Back-substitution gives

\label{eqn:electrostaticJacksonSelfEnergy:380}
\int d^3 \Brho
\frac{ \Brho }{ \Abs{\Brho}^3 } \cdot
\frac{(\ncap + \Brho)}{ \Abs{\ncap + \Brho}^3}
=
4 \pi
+
\oint dA’ \ncap’ \cdot \spacegrad_\Brho \inv{ \Abs{\Brho} \Abs{\ncap + \Brho}}.

We can argue that this last integral tends to zero, since

\label{eqn:electrostaticJacksonSelfEnergy:400}
\begin{aligned}
\oint dA’ \ncap’ \cdot \spacegrad_\Brho \inv{ \Abs{\Brho} \Abs{\ncap + \Brho}}
&=
\oint dA’ \ncap’ \cdot \lr{
\lr{ \spacegrad_\Brho \inv{ \Abs{\Brho}} } \inv{\Abs{\ncap + \Brho}}
+
\inv{ \Abs{\Brho}} \lr{ \spacegrad_\Brho \inv{\Abs{\ncap + \Brho}} }
} \\
&=
-\oint dA’ \ncap’ \cdot \lr{
\frac{ \Brho } {\inv{ \Abs{\Brho}}^3 } \inv{\Abs{\ncap + \Brho}}
+
\inv{ \Abs{\Brho}} \frac{ (\Brho + \ncap) }{ \Abs{\ncap + \Brho}^3 }
} \\
&=
-\oint dA’ \inv{\Abs{\Brho} \Abs{\Brho + \ncap}}
\lr{
\frac{ \ncap’ \cdot \Brho }{
{\Abs{\Brho}}^2 }
+\frac{ \ncap’ \cdot (\Brho + \ncap) }{
{\Abs{\Brho + \ncap}}^2 }
}.
\end{aligned}

The integrand in this surface integral is of $$O(1/\rho^3)$$ so tends to zero on an infinite surface in the $$\Brho$$ coordinate system. This completes the “easy” integral, leaving

\label{eqn:electrostaticJacksonSelfEnergy:420}
\int d^3 \Brho
\frac{ \Brho }{ \Abs{\Brho}^3 } \cdot
\frac{(\ncap + \Brho)}{ \Abs{\ncap + \Brho}^3}
=
4 \pi.

The total field energy can now be expressed as a sum of the self energies and the interaction energy
\label{eqn:electrostaticJacksonSelfEnergy:440}
W =
\frac{1}{32 \pi^2 \epsilon} \int d^3 \Bx \frac{q_1^2}{\Abs{\Bx – \Bx_1}^4 }
+
\frac{1}{32 \pi^2 \epsilon} \int d^3 \Bx \frac{q_2^2}{\Abs{\Bx – \Bx_2}^4 }
+ \inv{ 4 \pi \epsilon}
\frac{q_1 q_2}{\Abs{\Bx_1 – \Bx_2} }.

The interaction energy is exactly the potential energies for the two particles, the this total energy in the field is biased in the positive direction by the pair of self energies. It is interesting that the energy obtained from integrating the field energy density contains such self energy terms, but I don’t know exactly what to make of them at this point in time.

# References

[1] JD Jackson. Classical Electrodynamics. John Wiley and Sons, 2nd edition, 1975.

## Electric and magnetic fields at an interface

As pointed out in [1] the fields at an interface that is not a perfect conductor on either side are related by

\label{eqn:fieldsAtInterface:20}
\begin{aligned}
\ncap \cdot \lr{ \BD_2 – \BD_1 } &= \rho_{es} \\
\ncap \cross \lr{ \BE_2 – \BE_1 } &= -\BM_s \\
\ncap \cdot \lr{ \BB_2 – \BB_1 } &= \rho_{ms} \\
\ncap \cross \lr{ \BH_2 – \BH_1 } &= \BJ_s.
\end{aligned}

Given the fields in medium 1, assuming that boths sets of media are linear, we can use these relationships to determine the fields in the other medium.

\label{eqn:fieldsAtInterface:40}
\begin{aligned}
\ncap \cdot \BE_2 &= \inv{\epsilon_2} \lr{ \epsilon_1 \ncap \cdot \BE_1 + \rho_{es} } \\
\ncap \wedge \BE_2 &= \ncap \wedge \BE_1 -I \BM_s \\
\ncap \cdot \BB_2 &= \ncap \cdot \BB_1 + \rho_{ms} \\
\ncap \wedge \BB_2 &= \mu_2 \lr{ \inv{\mu_1} \ncap \wedge \BB_1 + I \BJ_s}.
\end{aligned}

Now the fields in interface 2 can be obtained by adding the normal and tangential projections. For the electric field

\label{eqn:fieldsAtInterface:60}
\begin{aligned}
\BE_2
&=
\ncap (\ncap \cdot \BE_2 )
+ \ncap \cdot (\ncap \wedge \BE_2) \\
&=
\inv{\epsilon_2} \ncap \lr{ \epsilon_1 \ncap \cdot \BE_1 + \rho_{es} }
+
\ncap \cdot (\ncap \wedge \BE_1 -I \BM_s).
\end{aligned}

Note that this manipulation can also be done without Geometric Algebra by writing $$\BE_2 = \ncap (\ncap \cdot \BE_2 ) – \ncap \cross (\ncap \cross \BE_2)$$).
Expanding $$\ncap \cdot (\ncap \wedge \BE_1) = \BE_1 – \ncap (\ncap \cdot \BE_1)$$, and $$\ncap \cdot (I \BM_s) = -\ncap \cross \BM_s$$, that is

\label{eqn:fieldsAtInterface:80}
\boxed{
\BE_2
=
\BE_1
+ \ncap (\ncap \cdot \BE_1) \lr{ \frac{\epsilon_1}{\epsilon_2} – 1 }
+ \frac{\rho_{es}}{\epsilon_2}
+ \ncap \cross \BM_s.
}

For the magnetic field

\label{eqn:fieldsAtInterface:100}
\begin{aligned}
\BB_2
&=
\ncap (\ncap \cdot \BB_2 )
+
\ncap \cdot (\ncap \wedge \BB_2) \\
&=
\ncap \lr{ \ncap \cdot \BB_1 + \rho_{ms} }
+
\mu_2 \ncap \cdot \lr{ \lr{ \inv{\mu_1} \ncap \wedge \BB_1 + I \BJ_s} },
\end{aligned}

which is

\label{eqn:fieldsAtInterface:120}
\boxed{
\BB_2
=
\frac{\mu_2}{\mu_1} \BB_1
+
\ncap (\ncap \cdot \BB_1) \lr{ 1 – \frac{\mu_2}{\mu_1} }
+ \ncap \rho_{ms}
– \ncap \cross \BJ_s.
}

These are kind of pretty results, having none of the explicit angle dependence that we see in the Fresnel relationships. In this analysis, it is assumed there is only a transmitted component of the ray in question, and no reflected component. Can we do a purely vectoral treatment of the Fresnel equations along these same lines?

# References

[1] Constantine A Balanis. Advanced engineering electromagnetics. Wiley New York, 1989.