PROGRAM Electric_Field IMPLICIT NONE REAL, PARAMETER :: k = 9.0E+9 ! N.m2/C2 REAL, PARAMETER :: Lambda = 1.0E-9 ! C/m REAL :: L,Ex,Ey,x,y,xp,f1,f2 f1(xp) = k*Lambda*(x-xp)/( (x-xp)**2+y**2 )**1.5 f2(xp) = k*Lambda*( y )/( (x-xp)**2+y**2 )**1.5 L = 2.0 ! Length of the wire in meter DO x=-1.0,1.0,0.5 ! calculate electric filed at grid points DO y=-1.0,1.0,0.5 IF(y==0.0) CYCLE Ex = Integrate_Ex(-L/2,L/2) Ey = Integrate_Ey(-L/2,L/2) PRINT *,x,y,Ex,Ey END DO END DO CONTAINS REAL FUNCTION Integrate_Ex(A,B) !------------------------------------------------------ ! Returns integral of a function F1(x) between ! [a,b] by Simpson Method. !------------------------------------------------------ REAL, INTENT(IN) :: A,B REAL :: h,Sum,x INTEGER :: I,N N = 200 ! number of part h = (B-A)/N Sum = F1(a)+F1(b) DO I=1,N-1 x = a + i*h IF(MOD(I,2)==1) THEN Sum = Sum + 4.0*F1(x) ELSE Sum = Sum + 2.0*F1(x) END IF END DO Integrate_Ex = Sum*h/3.0 END FUNCTION Integrate_Ex REAL FUNCTION Integrate_Ey(A,B) !------------------------------------------------------ ! Returns integral of a function F2(x) between ! [a,b] by Simpson Method. !------------------------------------------------------ REAL, INTENT(IN) :: A,B REAL :: h,Sum,x INTEGER :: I,N N = 200 ! number of part h = (B-A)/N Sum = F2(a)+F2(b) DO I=1,N-1 x = a + i*h IF(MOD(I,2)==1) THEN Sum = Sum + 4.0*F2(x) ELSE Sum = Sum + 2.0*F2(x) END IF END DO Integrate_Ey = Sum*h/3.0 END FUNCTION Integrate_Ey END PROGRAM Electric_Field