A Non-radiating(?) Oscillating Point Charge
G.R.Dixon, 07/23/07
Reference: the program at the end of this article.
Given two 1-coulomb point charges, q1 and q2, separated by the constant distance L = l and subject to the motions
,
,
W1, the work per cycle expended to drive q1, is positive. But if q1 is decreased, say to q1 = .0001 q2, then the work per cycle to drive q1 is negative. There must be at least one value of q1 in the range .0001 q2 < q1 < q2 such that W1 = 0. At this value of q1 no net work per cycle is expended to make q1 move with the specified motion. Indeed if one constructs a surface around the vibrating q1 (but excluding q2), then the net flux of field energy per cycle time through this surface is zero. Fig. 1 plots W1 vs. q1 over the range .075 q2 < q1 < .077 q2.
Figure 1

W1 vs. q1
Program that Computes W1 vs. q1
Private Sub cmdRangeOfq1_Click()
'****************
'Compute W1, the work per cycle expended to drive the charge q1 sinusoidally, for
'a range of values of q1. Output W1 vs. q1 for plotting purposes.
'****************
'Physical and mathematical constants
Const c As Double = 299792000# 'Speed of light
Const epsilon0 As Double = 0.00000000000885 'Permittivity constant
Const pi As Double = 3.14159265358979
Const Steps As Long = 100
Const q1max As Double = 0.077
Const q1min As Double = 0.075
Const deltaq As Double = (q1max - q1min) / Steps
Const q2 As Double = 1
Const Amp As Double = 1 'Amplitude of each oscillation
Const omega As Double = 0.01 * c / Amp 'Angular frequency of each oscillation
Const freq As Double = omega / (2 * pi) 'frequency of each oscillation
Const tau As Double = 1 / freq 'period of each oscillation
Const lambda As Double = c * tau 'wavelength
Const deltat As Double = tau / Steps 'time interval between epochs
Const L As Double = 1 * lambda 'separation
'Variables
Dim W1(Steps), W2 As Double
Dim x1(Steps), x2(Steps) As Double 'current coordinates of q1 and q2
Dim v(Steps), gamma(Steps), a(Steps), dadt(Steps) As Double
Dim BigIndex, Index As Long 'Loop index
Dim t(Steps) As Double 'Current time
Dim tr As Double 'Retarded time
Dim dt As Double 't - tr
Dim dtmin As Double 'Minimum value for dt
Dim dtmax As Double 'Maximum value for dt
Dim xr2 As Double 'q2 Retarded positions (on x-axis)
Dim vrx2 As Double 'Retarded velocities
Dim arx2 As Double 'Retarded accelerations
Dim Drx2 As Double 'component of vector Dr
Dim Dr2 As Double 'magnitude of vector Dr
Dim ux2 As Double 'component of vector u
Dim Ex2(Steps) As Double 'x-component of electric field vector
Dim Fx1(Steps) As Double 'Interactive force on q1
Dim FRadReact1(Steps) As Double 'Radiation Reaction force on q1
Dim FAgent1(Steps) As Double 'Agent counteraction
Dim P1(Steps) As Double 'Agent expended power
Dim q1(Steps) As Double 'Values of q1
'Compute values for W1.
For BigIndex = 0 To Steps - 1
W1(BigIndex) = 0
Next BigIndex
For BigIndex = 0 To Steps - 1
'Set value of q1.
q1(BigIndex) = q1min + BigIndex * deltaq
Debug.Print q1(BigIndex)
For Index = 0 To Steps - 1
'Compute the current positions and derivatives for q1.
t(Index) = Index * deltat
x1(Index) = -L / 2 + Amp * Sin(omega * t(Index))
v(Index) = omega * Amp * Cos(omega * t(Index))
gamma(Index) = 1 / Sqr(1 - v(Index) ^ 2 / c ^ 2)
a(Index) = -omega ^ 2 * Amp * Sin(omega * t(Index))
dadt(Index) = -omega ^ 3 * Amp * Cos(omega * t(Index))
'Compute the radiation reaction force on q1.
FRadReact1(Index) = q1(BigIndex) ^ 2 / (6 * pi * epsilon0 * c ^ 3) * gamma(Index) ^ 4 * (dadt(Index) + 3 * gamma(Index) ^ 2 * v(Index) * a(Index) ^ 2 / c ^ 2)
'Compute the needed retarded quantities for q2.
dtmin = 0
dtmax = 5 * L / c
Do
dt = (dtmax + dtmin) / 2
tr = t(Index) - dt
xr2 = L / 2 + Amp * Sin(omega * tr)
Drx2 = x1(Index) - xr2
Dr2 = Abs(Drx2)
If Abs(c * dt - Dr2) < 2 ^ (-30) Then Exit Do
If c * dt - Dr2 > 0 Then
dtmax = dt
Else
dtmin = dt
End If
Loop
vrx2 = omega * Amp * Cos(omega * tr)
arx2 = -(omega ^ 2) * Amp * Sin(omega * tr)
'Compute the components of vector u.
ux2 = c * Drx2 / Dr2 - vrx2
'Compute the electric field components of q2 at q1
Ex2(Index) = q2 / (4 * pi * epsilon0) * Dr2 / (Drx2 * ux2) ^ 3 * (ux2 * (c ^ 2 - vrx2 ^ 2))
Next Index
'Now compute the electric (interactive) force on q1.
For Index = 0 To Steps - 1
Fx1(Index) = q1(BigIndex) * Ex2(Index)
Next Index
'Then compute W1.
For Index = 0 To Steps - 1
FAgent1(Index) = -FRadReact1(Index) - Fx1(Index)
P1(Index) = FAgent1(Index) * v(Index)
Next Index
For Index = 0 To Steps - 1
W1(BigIndex) = W1(BigIndex) + P1(Index) * deltat
Next Index
Next BigIndex
'Output values of q1 and W1 for plotting purposes.
Open "c:\WINMCAD\ZeroRadiator.prn" For Output As #1
For BigIndex = 0 To Steps - 1
Write #1, q1(BigIndex), W1(BigIndex)
Next BigIndex
MsgBox ("Ready for plotting")
Close
Stop
End Sub