Professional Documents
Culture Documents
Este programa que se presenta acontinuacion tiene el uso de calcular la matriz Y_BUS la
cual nos sirve para ver que tan robustos son los nodos dentro de una red electrica y por
ende llegan a ser mas eficientes que los menos robustos.
Para hacer esto se le debera decir cuantos elementos y entre que nodos estan conectados,
tambien se le debera especificar cuando un elemento tenga derivaciones y de ser a si, se debera
incluir en el calculo.
YBUSIN.f90 verifica cada uno de los elementos, tanto para generar los
elementos dentro y fuera de la diagonal principal
Uso del Programa
Primero se debe de realizar un archivo de datos el cual debera ser de la sigiente forma:
YBUS_IN.DAT
2) DATOS DE ELEMENTOS:
NODO DE SALIDA, NODO DE ENTRADA, IMPEDANCIA SERIE, SI EL ELEMENTO TIENE
COMPONENTE EN DERIVACION, TIPO=1, EN ESTE CASO SE LEE LA ADMITANCIA Y'pq/2 DE
LA LINEA O TRANSFORMADOR.
CASO CONTRARIO, PROCEDE A LEER LA IMPEDANCIA SERIE DE OTRO ELEMENTO
Ejemplo:
5 7
1 2 (0.02,0.06) 1
(0.0,0.030) ADMITANCIA PARALELO/2
1 3 (0.08,0.24) 1
(0.0,0.025) 2 <- Con admitancia en derivacion
2 3 (0.06,0.18) 1
(0.0,0.020) 2
2 4 (0.06,0.18) 1
(0.0,0.0) 1 <- Sin admitancia en derivacion
2 5 (0.04,0.12) 1
(0.0,0.015)
3 4 (0.01,0.03) 1
(0.0,0.0)
Se guardara en un bloc de notas con la extencion (ejemplo.DAT) en la misma carpeta donde esta el
ejecutable
Lo que el programa te pedira a la hora de ejecutarlo es el archivo punto .DAT que acabas de crear.
Una ves que hayas ingresado el archivo (.DAT) el programa te pedira crear un nuevo archivo de
preferencia con el MISMO NOMBRE pero con la nueva extension (ejemplo.RES) donde arrojara los
resultados.
Sintaxis
Portada
SUBROUTINE PORTADA
WRITE(*,*) 'UAM AZCAPOTZALCO'
WRITE(*,*) 'DIVISION DE CIENCIAS BASICAS E INGENIERIA'
WRITE(*,*) 'LICENCIATURA EN INGENIERIA ELECRTICA'
WRITE(*,*) 'PROGRAMACION APLICADA A SISTEMAS ELECTRICOS DE POTENCIA'
WRITE(*,*) 'PROGRAMA: CALCULO DE YBUS_IN'
WRITE(*,*) 'ALUMNO: PEREDO CASTRO SERGIO'
END SUBROUTINE PORTADA
YBUS_IN
PROGRAM YBUS_IN
!PROGRAMA PARA LA FORMACION DE LA MATRIZ DE ADMITANCIAS NODALES (YBUS)
!POR EL METODO DE INSPECCION DE LA RED
!ELABORO V. RESENDIZ
PRINT *,'INICIA PROGRAMA YBUS_IN'
CALL PORTADA
CALL PRODUCTP
CALL LEEDATOS
CALL YBUSIN
END PROGRAM YBUS_IN
mDATA01
MODULE mDATA01
IMPLICIT NONE
!VARIABLES GLOBALES
INTEGER :: n, e
INTEGER, ALLOCATABLE :: p(:), q(:), tele(:)
COMPLEX, ALLOCATABLE :: zpq(:), ypqd2(:)
END MODULE mDATA01
mDATA02
MODULE mDATA02
IMPLICIT NONE
!VARIABLES GLOBALES
COMPLEX, ALLOCATABLE :: YBUS(:,:), ZBUS(:,:)
END MODULE mDATA02
LEEDATOS
SUBROUTINE LEEDATOS
! OBJETO:
! * ABRE UNIDADES
USE mDATA01
IMPLICIT NONE
!IMPLICIT NONE INDICA QUE VOY A DECLARAR TODAS LAS VARIABLES DE LA RUTINA
!AQUI VA LA DECLARACION DE TODAS LAS VARIABLES
CHARACTER(LEN = 40) :: DATOS, RESULTADOS
INTEGER :: elemento
!PRINT *,p
WRITE(*,*) 'TERMINA RUTINA LEE_DATOS'
END SUBROUTINE LEEDATOS
INMAC
SUBROUTINE INMAC(orden,d,ai)
IMPLICIT NONE
INTEGER :: orden,col,renglon,reng
INTEGER :: i, j
COMPLEX :: a(orden,2*orden),ai(orden,orden)
COMPLEX :: d(orden,orden),pivote
COMPLEX :: UNO, CERO, temp
CERO = (0.0,0.0)
UNO = (1.0,0.0)
END DO
END DO
60 CONTINUE
100 CONTINUE
RETURN
SUBROUTINE YBUSIN
USE mDATA01
USE mDATA02
IMPLICIT NONE
INTEGER :: nodo, ele, i, j
WRITE(*,*) 'DESDE YBUS_IN, n & e'
WRITE(*,*) n, e
PRINT *,ypqd2
END IF
END DO
END DO
DO i = 1,n-1
DO j = i+1,n
DO ele = 1,e
END DO
YBUS(j,i) = YBUS(i,j)
END DO
END DO
DO j = i,n
IF(YBUS(i,j) .NE. (0.0,0.0)) THEN
WRITE(24,10)i, j, YBUS(i,j)
10 FORMAT(6X,'YBUS(',I2,',',I2,')=',E10.4,' + j ', E10.4)
END IF
END DO
END DO
DO j = i,n
WRITE(24,20)i, j, ZBUS(i,j)
20 FORMAT(6X,'ZBUS(',I2,',',I2,')=',E10.4,' + j ', E10.4)
END DO
END DO
!PRINT *,YBUS
INTEGER :: i, j, k
COMPLEX :: c(n,n)
DO i = 1, n
DO j = 1, n
DO k = 1, n
c(i,j) = c(i,j) + ZBUS(i,k) * YBUS(k,j)
END DO
END DO
END DO
DO i= 1, n
DO j= i, n
END DO