next up previous contents
Next: Subrutina PLOT Up: Subrutinas que usa el Previous: Subrutina GRAF   Contents

Subrutina PAGE

Con la subrutina PAGE se preparan dos hojas, en una de ellas se graficarán las variables (X, Y) y en la otra (R, Z) dadas por (I-1-3) donde R es el radio cilíndrico. Estas gráficas están contenidas en los archivos 10 y 20 que tienen reservada un área del disco; cada archivo está formado por cincuenta registros de ciento veinte palabras cada uno, lo que es equivalente a una página de cincuenta renglones y ciento veinte columnas. Los argumentos de PAGE son (X, N) donde X es un vector que contiene las coordenadas, N es un número que indica el tipo de operación que se va a efectuar, y puede tomar cinco valores como vamos a explicar enseguida. Los valores 2 y 4 ya no se usan y pueden omitirse:


1 Indica que hay que limpiar una página para cada gráfica. 3 Es para colocar un símbolo en las gráficas. 5 Se usa para imprimir las dos gráficas.


Debido a que se va a usar una equivalencia (no puede usarse con una variable que está en la lista de argumentos), es necesario copiar Y en X. Recuérdese que aunque Y es un argumento, hay que dimensionarlo dentro de la subrutina. El arreglo JJJ va a contener la imagen de una línea. Nótese que lo primero que se hace es limpiar el arreglo colocando también una letra I en la columna 60. El eje horizontal para la gráfica (X, Y) se toma en la mitad de la página pero en las curvas (R, Z) dicho eje se escribe al pie de página porque R (que corresponde al eje vertical), no toma valores negativos.

      SUBROUTINE  PAGE ( Y,N )
      DIMENSION   X(6),Y(6),JJJ(120)
      EQUIVALENCE (XI,X(1)),(ETA,X(2)),(PHI,X(3))
      CALL CPYV (X,Y)
      GO TO (10,20,30,40,50),N
  10  CONTINUE
      DO 11 I=1,120
  11  JJJ(I)=16448
      JJJ(60)=-14016
      DO 12 I=1,50
      WRITE (10@1) JJJ
      WRITE (20@I) JJJ
  12  CONTINUE
      DO 13 I=1,120
  13  JJJ(I)=24640
      JJJ(60)=20032
      WRITE (10@50) JJJ
      WRITE (20@25) JJJ
      RETURN
  20  CONTINUE
      RETURN
  30  CONTINUE
      R=SQRT((XI*XI-1.0)*(1.0-ETA*ETA))
      XX=R*COS(PHI)
      YY=R*SIN(PHI)
      CALL PLOT (IFIX(20.0*XI*ETA)+60,50-IFIX(12.13*R),10,23616)
      CALL PLOT (IFIX(20.0*XX)+60,25-IFIX(12.13*YY),20,23616)
      RETURN
  40  CONTINUE
      RETURN
  50  CONTINUE
      WRITE (3,350)
      DO 51 I=1,50
      READ (10@I) JJJ
      WRITE (3,351) JJJ
  51  CONTINUE
      WRITE (3,350)
      WRITE (3,352)
      WRITE (3,350)
      DO 52 I=1,50
      READ (20@I) JJJ
      WRITE (3,351) JJJ
  52  CONTINUE
      WRITE (3,350)
      WRITE (3,352)
      RETURN
 350  FORMAT (1X,12(@ESFM*IPN**@))
 351  FORMAT (1X,120A1)
 352  FORMAT (1H1)
      END
Los dos centros del problema se colocaron en las posiciones $-1$ y $+1$, y van a corresponder según nuestra escala a las columnas 40 y 80. Entonces se va a graficar el intervalo $(-3,3)$ sobre el eje. Recuérdese también que para guardar un arreglo en el disco se usa la instrucción:
                     WRITE ( ARCHIVO, @ I ) ARREGLO
@ indica que se trata del disco en tanto que I señala el registro (que corresponde al renglón ) donde va a guardarse un arreglo. Para la lectura en disco el criterio es el mismo. Como X y Y están declarados como vectores no pueden usarse como nombres de variables por eso en este programa los representamos por XX y YY respectivamente. El radio cilíndrico se representará por R. Complementaria a PAGE se tiene la subrutina PLOT la cual discutiremos más adelante. Nótese que al imprimir, renglones y columnas no crecen en la misma proporción sino que hay una razón de crecimiento de $20:12.13$. Teniendo en cuenta ese hecho, se hacen en el programa las correcciones de escala; de no hacerlo así, se obtendrían gráficas distorsionadas. Siempre que se grafica en esta forma deben tomarse esas precauciones. Eso es todo lo que se necesita para discutir la subrutina y nos detendremos más en la misma.
next up previous contents
Next: Subrutina PLOT Up: Subrutinas que usa el Previous: Subrutina GRAF   Contents
Pedro Hernandez 2006-02-20