PlotCitizen

Untitled

Dec 14th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. PROGRAM vct
  2.     IMPLICIT NONE
  3.       INTEGER, ALLOCATABLE, DIMENSION(:) :: mgs
  4.       INTEGER, ALLOCATABLE, DIMENSION(:) :: xps
  5.       INTEGER, ALLOCATABLE, DIMENSION(:) :: yps
  6.       REAL    :: fx
  7.       REAL    :: fy
  8.       INTEGER :: i
  9.       INTEGER :: j
  10.       INTEGER :: k
  11.       INTEGER :: n
  12.       REAL(3), PARAMETER :: pi = 3.1415926536
  13.       REAL(3), PARAMETER :: e0 = 8.854187817e-12
  14.      
  15. !      CHARACTER (LEN=1) :: m1
  16.  
  17.   fx = 0
  18.   fy = 0
  19.   i  = 0
  20.  
  21.   WRITE(6,*) 'How many charges?'
  22.   READ(5,* )  n
  23.    
  24.   ALLOCATE(mgs(n))
  25.   ALLOCATE(xps(n))
  26.   ALLOCATE(yps(n))
  27.  
  28.   DO
  29.     IF (i /= n) THEN
  30.       i=1+i
  31.       WRITE(6,*) 'Enter magnitude of charge number',i
  32.       READ(5,* ) mgs(i)
  33.       WRITE(6,*) 'Enter x-position of this charge (between -10 and 10)'
  34.       READ(5,* ) xps(i)
  35.       WRITE(6,*) 'Enter y-position of this charge (between -10 and 10)'
  36.       READ(5,* ) yps(i)
  37.       CYCLE
  38.     ELSE
  39.       EXIT
  40.     END IF
  41.   END DO
  42.    
  43.   DO i=-10,10,1
  44.     DO j=-10,10,1
  45.       DO k=1,SIZE(mgs),1
  46.         IF ((ABS(xps(k)-i) /= 0) .AND. (ABS(yps(k)-j) /= 0)) THEN
  47.           fx = fx + (mgs(k)*(xps(k)-i))/(4*pi*e0*(ABS(xps(k)-i))**3)
  48.           CYCLE
  49.         ELSE
  50.           CYCLE
  51.         END IF
  52.       END DO
  53.      
  54.       DO k=1,SIZE(mgs),1
  55.         IF ((ABS(xps(k)-i) /= 0) .AND. (ABS(yps(k)-j) /= 0)) THEN
  56.           fy = fy + (mgs(k)*(yps(k)-j))/(4*pi*e0*(ABS(yps(k)-j))**3)
  57.           CYCLE
  58.         ELSE
  59.           CYCLE
  60.         END IF
  61.       END DO
  62.       WRITE(6,*) i, j, fx, fy
  63.     END DO
  64.   END DO
  65.   DEALLOCATE(mgs(n))
  66.   DEALLOCATE(xps(n))
  67.   DEALLOCATE(yps(n))
  68. END PROGRAM vct
Advertisement
Add Comment
Please, Sign In to add comment