Programs for deducing potentials and fields at a flat mesh of parallel round wires (xmpl2d20.dat).

 

These can be copied from the end of file xmpl2d20.dat, which is supplied with the CPO2D package.

 

Appendix A

Program used to deduce v1, v2, vc and ec from the results in the output data

File temp20a.dat :

 

C Program for finding average potentials in region of a mesh

C Used in conjunction with xmpl2d20.dat

DIMENSION a(201)

CHARACTER dummy*6

n = 100

OPEN (UNIT=1,FILE='temp20a.dat',STATUS='OLD')

C =trajectory output file

OPEN (UNIT=2,FILE='tempres.dat',STATUS='UNKNOWN')

C =results file

C Read unwanted lines:

100 READ (1,'(A6)') dummy

IF (dummy.NE.' x') GOTO 100

C The results give the potential along x for constant y

C Integrate over x, using Simpsons rule

C The first point in each row is not given in the output file. It is 0,

C the potential at the wire

DO iz = 1 , 2

C -correspond to z=+r, -r

C Integrate over x:

DO i = 1 , n

READ (1,*) dummy1 , dummy2 , a(i)

ENDDO

avx = a(n)

C =end points (remembering that the first end point is 0)

DO i = 1 , (n-1) , 2

avx = avx + 4.*a(i)

C =odd points

ENDDO

DO i = 2 , (n-2) , 2

avx = avx + 2.*a(i)

C =even points

ENDDO

avx = avx/3.

C =Simpson integration, for unit spacing

avx = avx/real(n)

C =average for this row

WRITE (2,'(F10.6)') avx

DO i = 1 , 5

READ (1,'(A1)') dummy

ENDDO

ENDDO

C z=-r:

C Finally, read pot and field at centre:

READ (1,'(A1)') dummy

READ (1,*) (a(i), i = 1 , 5)

pot = a(3)

field = a(5)

WRITE (2,'(2F10.6)') pot , field

STOP

END

 

 

Appendix B

Program used to derive fourier components of the potential, and average and

maximum values of the field, from the results in the output data file

(tmp20a.dat), when the above file has the lines:

y y potentials and fields required? (y/n)

0.0 -0.0 x and z coordinates of initial end

0.5 -0.0 x and z coordinates of final end (in mm)

101 number of points, circle and its centre

0.00001 inaccuracy of potentials and fields

y y potentials and fields required? (y/n)

0.0 -0.2 x and z coordinates of initial end

0.5 -0.2 x and z coordinates of final end (in mm)

101 number of points, circle and its centre

0.00001 inaccuracy of potentials and fields

etc

and when the output file is copied to tempin.dat and the lines containing words

are deleted.

 

If the radius of the wires is changed, remember to change the applied

potentials.

 

C Program for finding average and maximum field strengths and fourier

C components of penetrating fields through meshes, July 1998.

C For 2D parallel wires, using xmpl2d20.dat.

DIMENSION pot(1001)

OPEN (UNIT=1,FILE='tempin.dat',STATUS='OLD')

C =field data, from temp20a.dat

OPEN (UNIT=2,FILE='tempres.dat',STATUS='UNKNOWN')

C =results file

pi = 4.*ATAN(1.)

av_e = 0.

e_max = 0.

av_pot = 0.

f1 = 0.

f2 = 0.

f3 = 0.

angle = 0.

xprev = 0.

n = 3

i = 0

100 CONTINUE

i = i + 1

READ (1,*) x , z , pot(i) , ex , ez , etotal

IF (i.EQ.1) THEN

x1 = x

xprev = x

ENDIF

IF (i.EQ.2) THEN

dx = x - xprev

n = (0.500001/dx) + 1

C =total number of points

ENDIF

C Integrate by Simpons rule:

IF ( (i.EQ.1) .OR. (i.EQ.n) ) THEN

av_e = av_e + etotal

av_pot = av_pot + pot(i)

ELSEIF (mod(i,2).EQ.0) THEN

av_e = av_e + 4.*etotal

av_pot = av_pot + 4.*pot(i)

ELSE

av_e = av_e + 2.*etotal

av_pot = av_pot + 2.*pot(i)

ENDIF

C find maximum:

e_max = max(etotal,e_max)

IF (i.EQ.n) GOTO 200

GOTO 100

200 CONTINUE

av_e = av_e/(3.*real(n-1))

C Calculate fourier components:

C Integrate by Simpons rule:

DO i = 1 , n

angle = 2.*pi*real(i-1)*0.5/real(n-1)

C =2*pi*x/s

cos1 = cos(angle)

cos2 = cos(2.*angle)

cos3 = cos(3.*angle)

dpot = pot(i) -av_pot

IF ( (i.EQ.1) .OR. (i.EQ.n) ) THEN

f1 = f1 + dpot*cos1

f2 = f2 + dpot*cos2

f3 = f3 + dpot*cos3

ELSEIF (mod(i,2).EQ.0) THEN

f1 = f1 + 4.*dpot*cos1

f2 = f2 + 4.*dpot*cos2

f3 = f3 + 4.*dpot*cos3

ELSE

f1 = f1 + 2.*dpot*cos1

f2 = f2 + 2.*dpot*cos2

f3 = f3 + 2.*dpot*cos3

ENDIF

ENDDO

C Value of integral of cos(2*pi*x/s)**2 from 0 to s/2 is 0.25

f1 = f1/(1.5*real(n-1))

f2 = f2/(1.5*real(n-1))

f3 = f3/(1.5*real(n-1))

C Multiply by exp(-2*m*pi*z/s):

f1 = f1*exp(-2.*pi*z)

f2 = f2*exp(-4.*pi*z)

f3 = f3*exp(-6.*pi*z)

WRITE (2,'(1P6E11.3)') z , av_e , e_max , f1 , f2 , f3

STOP

END