Parametric Functions (Fortran 90/95 Code)

Smith Chart

      PROGRAM SMITH
      USE DISLIN
      IMPLICIT NONE
      INTEGER, PARAMETER :: N=1000
      INTEGER, PARAMETER :: M=1000
      REAL, DIMENSION (N) :: X, Y
      REAL, DIMENSION (11) :: ZIMG =(/5.0, 2.0, 1.0, 0.5, 0.2, 0.0, &
                                     -0.2, -0.5, -1.0,-2.0, -5.0/)
      REAL, DIMENSION (5) :: ZRE = (/0.2, 0.5, 1.0, 2.0, 5.0/)
      REAL, DIMENSION (5) :: X2 = (/0.42, 0.3, 0.63, 0.83, 0.67/) 
      REAL, DIMENSION (5) :: Y2 = (/-0.11, 0.15, 0.28, 0.0, -0.43/)
      REAL :: STEP
      INTEGER :: I

      STEP = (50.0 + 50.0) / (N - 1)
      DO I=1,N
        x(I) = 0.5
        Y(I) = - 50.0 + (I - 1) * STEP
      END DO

      CALL SCRMOD ('revers')
      CALL METAFL ('cons')
      CALL DISINI ()
      CALL PAGERA ()
      CALL HWFONT ()

      CALL TITLIN ('Smith Chart', 1)
      CALL NAME   ('X-axis', 'x')

      CALL LABTYP ('vert', 'x')
      CALL LABTYP ('vert', 'y')
      CALL LABTYP ('hori', 'x')
      CALL LABDIS (-50, 'y')
      CALL TICPOS ('revers', 'y')

      CALL HEIGHT (30)
      CALL HNAME  (30)

      CALL GRAFR  (ZRE, 5, ZIMG, 11)
      CALL HTITLE (40)
      CALL TITLE  ()

      CALL GRIDRE (1.0, -50.0, 50.0, M)
      CALL GRIDRE (2.0, -50.0, 50.0, M)
      CALL GRIDRE (3.0, -50.0, 50.0, M)
      CALL GRIDRE (4.0, -50.0, 50.0, M) 
      CALL GRIDRE (5.0, -50.0, 50.0, M)
      CALL GRIDIM (0.5, 0.001, 50.0, M)
      CALL GRIDIM (1.0, 0.001,  1.0, M)
      CALL GRIDIM (2.0, 0.001, 50.0, M)
      CALL GRIDIM (3.0, 0.001, 50.0, M)
      CALL GRIDIM (4.0, 0.001, 50.0, M)
      CALL GRIDIM (5.0, 0.001, 50.0, M)

      CALL LABDIS (20, 'y')
      CALL TICPOS ('labels', 'y')
      CALL LABDIG (-1, 'y')
      CALL TICKS  (10, 'y')
      CALL YPOLAR (180.0, -180.0, 180.0, -30.0, 'Y-axis', 0)

      CALL COLOR  ('red')
      CALL CURVE  (X, Y, N)

      CALL INCMRK (1)
      CALL POLCRV ('pspline')
      CALL COLOR  ('green')
      CALL CURVE  (X2,Y2,5)

      CALL COLOR  ('fore')
      CALL DISFIN ()
      END PROGRAM SMITH


Smith Chart, Admittance Plot

      PROGRAM SMITH2
      USE DISLIN
      IMPLICIT NONE
      INTEGER, PARAMETER :: M=1000
      REAL, DIMENSION (11) :: ZIMG =(/5.0, 2.0, 1.0, 0.5, 0.2, 0.0, &
                                     -0.2, -0.5, -1.0,-2.0, -5.0/)
      REAL, DIMENSION (5) :: ZRE = (/0.2, 0.5, 1.0, 2.0, 5.0/)
      REAL, DIMENSION (5) :: X2 = (/0.42, 0.3, 0.63, 0.83, 0.67/) 
      REAL, DIMENSION (5) :: Y2 = (/-0.11, 0.15, 0.28, 0.0, -0.43/)
      REAL, DIMENSION (5) :: X3,Y3 
      REAL :: V
      INTEGER :: I

!     Convert impedance data to admittance by Y = 1 / Z
      DO I=1,5
        V = X2(I) * X2(I) + Y2(I) * Y2(I)
        X3(I) = X2(I) / V
        Y3(I) = -Y2(I) / V
      END DO

      CALL SCRMOD ('revers')
      CALL METAFL ('cons')
      CALL DISINI ()
      CALL PAGERA ()
      CALL HWFONT ()

      CALL TITLIN ('Smith Chart', 1)
      CALL TITLIN ('Admittance Plot', 2)

      CALL AXSTYP ('admittance')
      CALL NAME   ('X-axis', 'x')
      CALL NAME   ('X-axis', 'y')
      CALL LABTYP ('vert', 'y')
      CALL LABTYP ('hori', 'x')

      CALL HEIGHT (30)
      CALL HNAME  (30)

      CALL COLOR  ('red')
      CALL GRAFR  (ZRE, 5, ZIMG, 11)

      CALL GRIDRE (1.0, -50.0, 50.0, M)
      CALL GRIDRE (2.0, -50.0, 50.0, M)
      CALL GRIDRE (3.0, -50.0, 50.0, M)
      CALL GRIDRE (4.0, -50.0, 50.0, M) 
      CALL GRIDRE (5.0, -50.0, 50.0, M)
      CALL GRIDIM (0.5, 0.001, 50.0, M)
      CALL GRIDIM (1.0, 0.001,  1.0, M)
      CALL GRIDIM (2.0, 0.001, 50.0, M)
      CALL GRIDIM (3.0, 0.001, 50.0, M)
      CALL GRIDIM (4.0, 0.001, 50.0, M)
      CALL GRIDIM (5.0, 0.001, 50.0, M)

      CALL COLOR  ('FORE')
      CALL HTITLE (40)
      CALL TITLE  ()

      CALL INCMRK (1)
      CALL POLCRV ('pspline')
      CALL COLOR  ('green')
      CALL CURVE (X3, Y3, 5)
      CALL DISFIN ()
      END PROGRAM SMITH2

Smith Chart, Impedance and Admittance

      PROGRAM SMITH3
      USE DISLIN
      IMPLICIT NONE
      INTEGER, PARAMETER :: M=1000
      REAL, DIMENSION (11) :: ZIMG =(/5.0, 2.0, 1.0, 0.5, 0.2, 0.0, &
                                     -0.2, -0.5, -1.0,-2.0, -5.0/)
      REAL, DIMENSION (5) :: ZRE = (/0.2, 0.5, 1.0, 2.0, 5.0/)
      REAL, DIMENSION (5) :: X2 = (/0.42, 0.3, 0.63, 0.83, 0.67/) 
      REAL, DIMENSION (5) :: Y2 = (/-0.11, 0.15, 0.28, 0.0, -0.43/)
      REAL, DIMENSION (5) :: X3,Y3 
      REAL :: V
      INTEGER :: I

!     Convert impedance data to admittance by Y = 1 / Z
      DO I=1,5
        V = X2(I) * X2(I) + Y2(I) * Y2(I)
        X3(I) = X2(I) / V
        Y3(I) = -Y2(I) / V
      END DO

      CALL SCRMOD ('revers')
      CALL METAFL ('cons')
      CALL DISINI ()
      CALL PAGERA ()
      CALL HWFONT ()

      CALL TITLIN ('Smith Chart', 1)
      CALL TITLIN ('Impedance and Admittance Plot', 2)

      CALL LABTYP ('vert', 'y')
      CALL LABTYP ('hori', 'x')
      CALL LABDIS (-50, 'y')
      CALL LABDIS (10, 'x')

      CALL HEIGHT (30)
      CALL HNAME  (30)
      CALL TICPOS ('revers', 'y')

      CALL GRAFR  (ZRE, 5, ZIMG, 11)
      CALL HTITLE (40)
      CALL TITLE  ()

      CALL GRIDRE (1.0, -50.0, 50.0, M)
      CALL GRIDRE (2.0, -50.0, 50.0, M)
      CALL GRIDRE (3.0, -50.0, 50.0, M)
      CALL GRIDRE (4.0, -50.0, 50.0, M) 
      CALL GRIDRE (5.0, -50.0, 50.0, M)
      CALL GRIDIM (0.5, 0.001, 50.0, M)
      CALL GRIDIM (1.0, 0.001,  1.0, M)
      CALL GRIDIM (2.0, 0.001, 50.0, M)
      CALL GRIDIM (3.0, 0.001, 50.0, M)
      CALL GRIDIM (4.0, 0.001, 50.0, M)
      CALL GRIDIM (5.0, 0.001, 50.0, M)

      CALL INCMRK (1)
      CALL POLCRV ('pspline')
      CALL COLOR  ('green')
      CALL CURVE  (X2,Y2,5)
      CALL ENDGRF ()

      CALL AXSTYP ('admittance')
      CALL LABDIS (20, 'y')

      CALL TICPOS ('labels', 'y')
      CALL COLOR  ('red')
      CALL TICPOS ('reverse', 'x')
      CALL LABDIS (-50, 'x')

      CALL GRAFR  (ZRE, 5, ZIMG, 11)

      CALL GRIDRE (1.0, -50.0, 50.0, M)
      CALL GRIDRE (2.0, -50.0, 50.0, M)
      CALL GRIDRE (3.0, -50.0, 50.0, M)
      CALL GRIDRE (4.0, -50.0, 50.0, M) 
      CALL GRIDRE (5.0, -50.0, 50.0, M)
      CALL GRIDIM (0.5, 0.001, 50.0, M)
      CALL GRIDIM (1.0, 0.001,  1.0, M)
      CALL GRIDIM (2.0, 0.001, 50.0, M)
      CALL GRIDIM (3.0, 0.001, 50.0, M)
      CALL GRIDIM (4.0, 0.001, 50.0, M)
      CALL GRIDIM (5.0, 0.001, 50.0, M)

      CALL POLCRV ('pspline')
      CALL COLOR  ('green')
      CALL CURVE  (X3,Y3,5)
      CALL ENDGRF ()
      CALL DISFIN ()
      END PROGRAM SMITH3