Capacitance of parallel-plate and two-sphere capacitors

In this example, we exploit scuff-em's electrostatics module to compute the capacitance of parallel-plate and two-sphere capacitors.

The files for this example may be found in the share/scuff-em/examples/TwoBodyCapacitors subdirectory of your scuff-em installation.

Capacitance of a parallel-plate capacitor

I consider a parallel-plate capacitor consisting of two square conducting plates of side length separated by various distances . Neglecting fringing-field (i.e. finite-size) effects, the capacitance is

Creating scuff-em input files

Because electrostatics is scale-invariant, I can choose length units arbitrarily, and I will choose units in which . To specify my geometry thus requires meshed representations of squares of side length 1, which I generate (at two different meshing resolutions) like this in gmsh:

% gmsh -setnumber N 10 -2 Square_N.geo -o Square.msh 
% RenameMesh Square.msh
% gmsh -setnumber N 20 -2 Square_N.geo -o Square.msh 
% RenameMesh Square.msh

Here Square_N.geo is the gmsh input file and RenameMesh is a little script that uses [scuff-analyze][scuff-analyze] to count the number of interior edges in a surface mesh and rename the file accordingly.

This produces files named Square_280.msh and Square_1160.msh. Now write scuff-em geometry files:



and a list of geometrical transformations describing 20 values of the plate-plate spacing ranging from to :


Before running calculations, double-check that our .scuffgeo and .trans files file correctly describe the range of geometries we want to study:

% scuff-analyze --geometry TwoPlateCapacitor_280.scuffgeo --transfile TwoPlateCapacitor.trans 
% gmsh TwoPlateCapacitor_280.transformed.pp


Running the calculation

% for N in 280 1160
% do
%   ARGS=""
%   ARGS="${ARGS} --geometry  TwoPlateCapacitor_${N}.scuffgeo"
%   ARGS="${ARGS} --TransFile TwoPlateCapacitor.trans"
%   ARGS="${ARGS} --CapFile   TwoPlateCapacitor_${N}.out"
%   scuff-static ${ARGS}
% done

Plotting the data

% gnuplot
gnuplot> set logscale xy
gnuplot> plot 'TwoPlateCapacitor_280.out' u 1:(abs($3)) t 'SCUFF, N=280' w p pt 7 ps 1, 'TwoPlateCapacitor_1160.out' u 1:(abs($3)) t 'SCUFF, N=1160' w p pt 6 ps 2, 1/x w l lw 2 t 'Theoretical Prediction'


The deviations from the theoretical prediction at small are due to finite mesh resolution and are reduced in the finer-mesh calculation. On the other hand, the deviations at large are due to the finite size of the plates and are not changed by computing at finer resolution.

Capacitance of a two-sphere capacitor

The share/scuff-em/examples/TwoBodyCapacitors subdirectory of your scuff-em installation also contains input files for computing the self- and mutual capacitances of a capacitor consisting of two conducting spheres of radius separated by a surface-surface separation distance (center-center separation ). Analytical formulas for the self-capacitance and mutual capacitance for this case may be found in this paper from 1926:

  • A. Russell, "The problem of the spherical condenser", Journal of the Institution of Electrical Engineers   64   727 (1926). DOI: 10.1049/jiee-1.1926.0065

The scuff-static computation proceeds as above with new geometry and transformation files:

% for N in 501 2604
% do
%   ARGS=""
%   ARGS="${ARGS} --geometry  TwoSphereCapacitor_${N}.scuffgeo"
%   ARGS="${ARGS} --TransFile TwoSphereCapacitor.trans"
%   ARGS="${ARGS} --CapFile   TwoSphereCapacitor_${N}.out"
%   scuff-static ${ARGS}
% done

This time we'll plot both and and compare against the large- and small- analytical formulas in the paper of Russel above.


Here's the gnuplot script I used to make this plot: