1  REM  ****  HP BASIC PROGRAM LIBRARY  *******************************
2  REM
3  REM        EFIELD:  ELECTRIC FIELD STRENGTH
4  REM
5  REM        36629 REV  A   6/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  ************************************
50  REM EFIELD--COPYRIGHT 1970, POLYTECHNIC INSTITUTE OF BROOKLYN
100  REM   JOHN HOSIE   -  NORTHPORT HIGH -- 3/14/69
105  REM  REVISED BY C.LOSIK  8-25-70 
106  REM  SEE BELOW FOR IMPORTANT VARIABLES 
107  REM  'F' TYPE VARIABLES ARE FORCES 
110  REM M'VE CHOSEN THE ELECTSTATIC CONSTANT TO BE ONE AND 
120  REM ALL CHARGES TO BE ONE SO THAT THE FORCE CALCULATED 
130  REM IS JUST A RELATIVE FORCE.  IF YOU WOULD LIKE YOU MAY CHANGE
140  REM THINGS WHEN YOU RUN IT TO GET EXACT FORCES IN NEWTONS AND
150  REM USE CHARGES IN MICROCOULOMBS OR WHAT EVER ELSE YOU WISH. 
160  PRINT "THIS PROGRAM WILL CALCULATE THE FORCE ON A TEST CHARGE"
170  PRINT "THAT IS PLACED SOME DISTANCE, Y, AWAY FROM ANOTHER CHARGE;"
180  PRINT "A LINE OF CHARGE; AND A PLANE OF CHARGE."
190  PRINT "YOU MUST ENTER THE DISTANCE AWAY, Y; THE SPACING DESIRED"
200  PRINT "BETWEEN CHARGES, C, AND ALSO BETWEEN LINES OF CHARGE THAT"
210  PRINT "MAKE UP THE PLANE OF CHARGE."
220  PRINT "YOU MUST ALSO CHOOSE THE NUMBER OF CHARGES IN THE LINE OF"
230  PRINT "CHARGE THAT YOU WOULD LIKE TO USE (500 IS A GOOD VALUE IF"
240  PRINT "YOU USE A SPACING OF .1 FOR C."
250  PRINT "JUST SO THE CALCULATIONS DON'T GO TOO FAR I'VE INCLUDED"
260  PRINT "A STOP THAT DEPENDS UPON THE ANGLE FROM TEST CHARGE TOTHE"
270  PRINT "LAST CHARGE TO BE CALCULATED.  IF THE ANGLE IS LESS"
275  REM  Q1 AND Q2 ARE THE CHARGES 
280  LET Q1=1
290  LET Q2=1
295  REM  K IS THE ELECTROSTATIC CONSTANT 
300  LET K=1
305  REM  A IS THE CUTOFF ANGLE. THIS MAY BE CHANGED TO YOUR PREFERENCE 
310  LET A=2
315  PRINT "THAN"A"DEGREES, CALCULATIONS WILL CEASE."
320  LET S=SIN(3.14159*A/180)
330  PRINT 
340  PRINT "INPUT Y,C,N";
350  LET F1=0
353  INPUT Y,C,N
356  IF C <= 0 THEN 365
358  IF Y <= 0 THEN 365
360  IF N >= 0 THEN 370
365  PRINT "ONE OF YOUR VALUES IS UNREASONABLE."
367  GOTO 330
370  PRINT 
380  PRINT 
390  PRINT "NO. OF CHGS."
400  PRINT "ON EACH SIDE","FORCE"
410  PRINT "------------","-----"
420  FOR I=0 TO N
430  LET X=I*C
440  LET R=SQR(X*X+Y*Y)
450  LET F=K*Q1*Q2/(R*R)
460  IF I <> 0 THEN 490
470  LET F1=F*Y/R
480  GOTO 510
490  LET F1=F1+2*F*(Y/R)
510  IF I <= 10 THEN 580
520  IF I=1000*INT(I/1000) THEN 580
530  IF I>1000 THEN 600
540  IF I=100*INT(I/100) THEN 580
550  IF I>100 THEN 600
560  IF I=10*INT(I/10) THEN 580
570  GOTO 600
580  PRINT I,INT(100*F1+.5)/100
590  IF N=0 THEN 330
600  IF Y/R<S THEN 612
610  NEXT I
611  GOTO 620
612  PRINT I,INT(100*F1+.5)/100
613  PRINT "EXCESSIVE COMPUTER TIME WOULD BE REQUIRED TO CALCULATE"
614  PRINT "THE FORCE FOR ADDITIONAL CHARGES."
620  PRINT 
625  PRINT 
630  PRINT "THE EXACT VALUE FOR AN INFINITELY LONG LINE OF CHARGE IS";
640  PRINT 2*(K*Q1/C)/Y
650  PRINT 
660  PRINT 
670  PRINT 
680  PRINT "NOW ADD ROWS ON EITHER SIDE OF THE LINE OF CHARGE JUST"
683  PRINT "CALCULATED.  THE SPACING BETWEEN ROWS WILL BE THE SAME AS"
686  PRINT "THE SPACING BETWEEN THE CHARGES."
690  PRINT "ENTER THE NUMBER OF EQUALLY SPACED ROWS YOU WANT ON EACH SIDE"
700  INPUT M
702  IF M >= 0 THEN 710
704  PRINT "NO NEGATIVE VALUES, PLEASE."
706  GOTO 690
710  PRINT 
720  PRINT 
730  PRINT "NO. OF LINES"
740  PRINT "ON EACH SIDE","FORCE"
750  PRINT "------------","-----"
760  FOR P=0 TO M
770  LET Z=P*C
780  LET R1=SQR(Z*Z+Y*Y)
790  IF P <> 0 THEN 850
830  LET F3=2*(K*Q1/C)/Y
840  GOTO 870
850  LET F3=F3+2*F1*(Y^2)/(R1^2)
870  IF P=1000*INT(P/1000) THEN 930
880  IF P>1000 THEN 940
890  IF P=100*INT(P/100) THEN 930
900  IF P>100 THEN 940
910  IF P=10*INT(P/10) THEN 930
920  IF P>10 THEN 940
930  PRINT P,INT(100*F3+.5)/100
940  IF Y/R1<S THEN 952
950  NEXT P
951  GOTO 960
952  PRINT P,INT(100*F3+.5)/100
953  PRINT "EXCESSIVE COMPUTER TIME WOULD BE REQUIRED TO CALCULATE"
954  PRINT "THE FORCE FOR ADDITIONAL LINES OF CHARGE."
960  PRINT 
965  PRINT 
970  PRINT "THE EXACT VALUE FOR AN INFINITE PLANE OF CHARGE IS";
980  PRINT 2*3.14159*(K*Q1)/(C*C)
990  PRINT 
1000  PRINT 
1010  PRINT "DO YOU WANT ANOTHER RUN (1=YES, 0=NO) : ";
1020  INPUT C
1030  IF C=1 THEN 330
1040  IF C <> 0 THEN 1000
1050  END 
