|
|
Appendix A Option Explicit Private Sub cmdComputePrad_Click()
Const c As Double = 299792000 Const epsilon0 As Double = 0.00000000000885 Const pi As Double = 3.14159265358979 Const A As Double = 1 Const omega As Double = 0.95 * c * A Const freq As Double = omega / (2 * pi) Const tau As Double = 1 / freq Const Steps As Long = 1000 Const deltat As Double = tau / Steps Const q As Double = 1 Const TransV As Double = 277140791.364136 Const TransI As Double = 37
Dim t(Steps) As Double Dim I As Long Dim Prad(Steps) As Double Dim vx(Steps), gamma, ax, daxdt As Double Dim Term As Double Dim Erad As Double
'Compute the Powers. For I = 0 To Steps - 1 t(I) = I * deltat 'GoTo sinusoidal If I <= TransI Or I >= Steps / 2 - TransI And I <= Steps / 2 + TransI Or I >= Steps - TransI Then If I <= TransI Or I >= Steps - TransI Then vx(I) = TransV Else vx(I) = -TransV End If ax = 0 daxdt = 0 Else sinusoidal: vx(I) = omega * A * Cos(omega * t(I)) ax = -omega ^ 2 * A * Sin(omega * t(I)) daxdt = -omega ^ 3 * A * Cos(omega * t(I)) GoTo skipendif End If skipendif: gamma = 1 / Sqr(1 - vx(I) ^ 2 / c ^ 2) Term = -(gamma ^ 4) * q ^ 2 * vx(I) / (6 * pi * epsilon0 * c ^ 3) Prad(I) = Term * (daxdt + 3 * gamma ^ 2 * vx(I) * ax ^ 2 / c ^ 2) Next I 'Compute the total radiated energy per cycle. Erad = 0 For I = 0 To Steps - 1 Erad = Erad + Prad(I) * deltat Next I MsgBox ("Erad = " & Erad) 'Output the values of Prad(t) for plotting purposes. Open "c:\WINMCAD\Physics\Experiment091304.PRN" For Output As #1 For I = 0 To Steps - 1 Write #1, t(I), Prad(I) Next I MsgBox ("Ready for plotting") Stop
End Sub |