Sei sulla pagina 1di 193

UNIVERSIDADE FEDERAL DE PERNAMBUCO

CENTRO DE TECNOLOGIA E GEOCINCIAS


PROGRAMA DE PS-GRADUAO EM ENGENHARIA
ELTRICA

DISSERTAO DE MESTRADO
Biblioteca e Implementao de Modelos para Reatores
Naturalmente Saturados na Linguagem MODELS do
Programa ATP.

Suellen Cunha da Silva



Suellen Cunha da Silva

Biblioteca e Implementao de Modelos para Reatores


Naturalmente Saturados na Linguagem MODELS do
Programa ATP.

Dissertao submetida ao Programa de


Ps-Graduao em Engenharia Eltrica da
Universidade Federal de Pernambuco como
parte dos requisitos para obteno do grau
de Mestre em Engenharia Eltrica. rea de
Concentrao: Processamento de Energia.

Orientador: Manoel Afonso de Carvalho Jnior, PhD.


Coorientador: Geraldo Leite Torres, PhD.

Recife, Brasil
Agosto de 2016

Dedico a Valdenira Cunha (in memoriam), minha av.

Agradecimentos
Primeiramente agradeo a Deus, pois me abenoou durante toda a trajetria de estudos
me proporcionando sade, sabedoria e pacincia. Ao meu marido Bruno Silva, que me incentivou
e ajudou a durante estes dois anos, com tamanha persistncia e sempre otimista. Aos meus pais
e amigos do LDSP que me incentivaram e me ajudaram. Ao professor Manoel Afonso tenho
profunda gratido e admirao, pois me deu todo o suporte e dedicao sem exitar.

Resumo
Atualmente, a expanso da demanda energtica acontece por dois motivos principais: o aumento
da populao mundial e do consumo energtico per capita. Um dos desafios no contexto de
distribuio de energia est relacionado a regulao dos nveis de tenso das barras de transmisso
no sistema de distribuio de energia. Para correo de comportamentos indesejveis (e.g.,
flutuaes nos nveis de tenso), reatores naturalmente saturados (RNSs) so empregados na
compensao de reativos ajustando os nveis de tenso do sistema eltrico de potncia. Alm da
utilizao de prottipos para validao de cenrios do sistema eltrico, modelos computacionais
de RNSs podem facilitar a modelagem de reatores utilizando ferramentas de softwares. Tais
modelos auxiliam o projeto destes equipamentos e diminuem significativamente seu custo de
prototipao. Este trabalho apresenta um esquema de modelagem e uma biblioteca de simulao
de RNSs utilizando modelos de circuito magntico unificado (UMEC) na linguagem MODELS
do software Alternative Transient Program (ATP). A biblioteca implementa caractersticas
comuns a diferentes tipos de RNSs tornando simples a criao de novos modelos sem a
necessidade de reescrita de todo o cdigo para cada componente. Dessa forma, engenheiros
podem simular o comportamento de RNSs com diferentes configuraes de uma maneira simples
e efetiva. Neste trabalho, diversos estudos de caso so mostrados com o intuito de se apresentar
a viabilidade da soluo apresentada.

Palavras-chave: Reatores Naturalmente Saturados, Linguagem MODELS, Programa ATP,


Circuito Equivalente Magntico Unificado (UMEC).

Abstract
Currently, the energetic demand increase occurs due to two main reasons: the rise of world
population and expansion of per-capita consumption. A key challenge in the context of power
distribution is related to regulating the voltage levels of transmission bars in power distribution
systems. In order to fix undesirable behavior (e.g., fluctuations in voltage levels), naturally
saturated reactors (RNSs) are employed in the compensation of reactive power and adjusting
the electrical system voltage levels. The complexity and high cost of creating actual prototypes
for validating electrical system scenarios requires the creation of computer models of RNSs.
Such models help the design of equipment and significantly reduce their cost of prototyping.
This paper presents a modeling scheme and an RNS simulation library using Unified Magnetic
Equivalent Circuit (UMEC) in MODELS language of Alternative Transient Program (ATP)
software. The library implements common features for different types of RNSs facilitating the
creation of new RNSs without the need write the all the source code from scratch for each
component. Thus, engineers can simulate the behavior of RNSS with different configurations in
a more simple and effective way. In this work, several case studies are shown to demonstrate the
viability of the proposed solution.

Keywords: Naturally saturated reactors, MODELS language, ATP program, Unified Magnetic
Equivalent Circuit (UMEC).

Lista de ilustraes
Figura 1
Figura 2
Figura 3
Figura 4
Figura 5
Figura 6
Figura 7
Figura 8
Figura 9
Figura 10
Figura 11
Figura 12
Figura 13
Figura 14
Figura 15
Figura 16
Figura 17
Figura 18
Figura 19
Figura 20
Figura 21
Figura 22
Figura 23
Figura 24
Figura 25
Figura 26
Figura 27
Figura 28
Figura 29
Figura 30
Figura 31
Figura 32
Figura 33
Figura 34
Figura 35

Caracterstica de saturao intrnseca ao material magntico. . . . . . . . .


Arquivo PlotXY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Janela principal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Menu suspenso de componentes do programa ATPdraw . . . . . . . . . . .
Circuito bsico no ATPdraw . . . . . . . . . . . . . . . . . . . . . . . . . .
Visualizador de resultados do ATPdraw . . . . . . . . . . . . . . . . . . . .
Editor de texto do ATPdraw . . . . . . . . . . . . . . . . . . . . . . . . . .
Circuito equivalente de transformador de dois enrolamentos . . . . . . . . .
Transformador equivalente depois da discretizao . . . . . . . . . . . . . .
Transformador no linear . . . . . . . . . . . . . . . . . . . . . . . . . . .
caminhos de fluxos magnticos no ncleo . . . . . . . . . . . . . . . . . .
Circuito equivalente (UMEC) . . . . . . . . . . . . . . . . . . . . . . . . .
Equivalente de Norton do modelo UMEC . . . . . . . . . . . . . . . . . .
a) caminhos de fluxos magnticos no ncleo. b) circuito equivalente (UMEC)
Curva do indutor no linear x I . . . . . . . . . . . . . . . . . . . . . . .
Circuito simulador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Algoritmo da Curva B H utilizando mtodo de aproximao linear por partes
Algoritmo do clculo da corrente do UMEC para RNS . . . . . . . . . . . .
Caminhos de fluxos magnticos no ncleo. . . . . . . . . . . . . . . . . . .
Circuito equivalente (UMEC) . . . . . . . . . . . . . . . . . . . . . . . . .
Caminhos de fluxos magnticos no ncleo. . . . . . . . . . . . . . . . . . .
Circuito UMEC do reator com dois enrolamentos . . . . . . . . . . . . . .
Caminhos de fluxos magnticos no ncleo. . . . . . . . . . . . . . . . . . .
Circuito UMEC do reator com 6 enrolamentos. . . . . . . . . . . . . . . . .
Caminhos de fluxos magnticos no ncleo. . . . . . . . . . . . . . . . . . .
Cicruito UMEC do reator de 9 enrolamentos. . . . . . . . . . . . . . . . . .
Caminhos de fluxos magnticos no ncleo. . . . . . . . . . . . . . . . . . .
Circuito UMEC do reator em monobloco com 12 enrolamentos. . . . . . . .
Biblioteca RLib. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Fluxo de chamadas da biblioteca RLib. . . . . . . . . . . . . . . . . . . . .
Integrao entre a biblioteca RLib e diferentes implementaes de reatores
naturalmente saturados. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Dados de Entrada do RNS1. . . . . . . . . . . . . . . . . . . . . . . . . . .
Curva BxH do reator monofsico saturado sem perdas. . . . . . . . . . . .
Corrente de sada do reator monofsico saturado sem perdas. . . . . . . . .
Fluxos magnticos do reator monofsico saturado sem perdas. . . . . . . . .

14
19
20
21
22
22
23
27
28
29
30
31
31
34
35
35
37
40
41
41
43
43
46
46
50
51
54
54
74
75
76
77
78
78
78

Figura 36 Circuito indutor no linear no ATPdraw. . . . . . . . . . . . . . . . . . . .


Figura 37 Corrente de sada do modelo UMEC do reator monofsico sem perdas X
Corrente de sada representado pelo Indutor no linear do TYPE98. . . . . .
Figura 38 Circuito indutor no linear do ATPdraw com perdas. . . . . . . . . . . . . .
Figura 39 Fluxos dispersos do reator com perdas e Fluxos dispersos do reator sem perdas.
Figura 40 Correntes de reator com perdas e Correntes de reator sem perdas. . . . . . .
Figura 41 Dados de Entrada do RNS2. . . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 42 parmetros de testes utilizados no sistema. . . . . . . . . . . . . . . . . . .
Figura 43 Reator monofsico em testes. . . . . . . . . . . . . . . . . . . . . . . . . .
Figura 44 Circuito do transformador saturvel do atpdraw. . . . . . . . . . . . . . . .
Figura 45 Comparativo de correntes primrias dos ensaios de curto-circuito do RNS e
do transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . .
Figura 46 Comparativo de correntes secundrias dos ensaios de curto-circuito do RNS
e do transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . .
Figura 47 Comparativo de correntes primrias dos ensaios de plena carga do RNS e do
transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . . .
Figura 48 Comparativo de correntes psecundrias dos ensaios de plena carga do RNS e
do transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . .
Figura 49 Comparativo de correntes primrias dos ensaios em vazio do RNS e do
transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . . .
Figura 50 Comparativo de correntes secundrias dos ensaios em vazio do RNS e do
transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . . .
Figura 51 Parmetros de entrada do reator de 6 enrolamentos. . . . . . . . . . . . . .
Figura 52 Corrente trifsica nos enrolamentos primrio e secudrio do reator trifsico.
Figura 53 Tenso trifsica nos enrolamentos primrio e secundrio do reator trifsico.
Figura 54 Corrente na fase A no enrolamento primrio do RNS3YD. . . . . . . . . . .
Figura 55 Lao de histerese do RNS3YD. . . . . . . . . . . . . . . . . . . . . . . . .
Figura 56 transformador saturvel do atpdraw. . . . . . . . . . . . . . . . . . . . . .
Figura 57 Corrente de fase A dos RNS3YD X Transformador saturvel do ATPdraw. .
Figura 58 Parmetros de entrada do reator RNS9. . . . . . . . . . . . . . . . . . . . .
Figura 59 Corrente de fase A dos reatores trifsicos RNS9 e o RNS3YD. . . . . . . .
Figura 60 Reator com ligao paralela dos enrolamentos. . . . . . . . . . . . . . . . .
Figura 61 Corrente da fase A do RNS em Monobloco. . . . . . . . . . . . . . . . . .
Figura 62 Tenses nos enrolamentos de entrada do RNS em Monobloco. . . . . . . .

79
79
80
80
80
81
82
82
82
83
83
83
84
84
84
85
85
86
86
87
87
87
88
88
89
90
90

Lista de tabelas

Lista de abreviaturas e siglas


ATP

Alternative Transient Program

RNS

Reator Naturalmente Saturado

UMEC

Circuito Equivalente Magntico Unificado

Rlib

Nome da Biblioteca

EMTP-ATP

Electromagnetic Transients Program

ATPDraw

Pr-processador Grfico

TACS

Total Access Communication System

MODELS

Linguaguem de Programao

RlibAux

Mdulos Auxiliares da Biblioteca

RNSMatrix

Mdulo Principal para Operao de Matriz

RNS1

Reator Monofsico com um Enrolamento

RNS2

Reator Monofsico com dois Enrolamentos

RNS3YD

Reator Trifsico com seis Enrolamentos

RNS9

Reator Trifsico com nove Enrolamentos

Lista de smbolos
Vs

Tenso na Fonte

Campo Magntico

Densidade Magntica

Corrente do Material Magntico

Corrente de Saturao

Fluxo Magntico

Vn

Tenso Nominal

In

Tenso Nominal

V1

Tenso no Enrolamento Primrio

V2

Tenso no Enrolamento Secundrio

L1

Indutncia no Enrolamento Primrio

L2

Indutncia no Enrolamento Secundrio

Ldisperso

Indutncia Dispersa

Fluxo Magntico

Admitncia

Permencia

Ins

Corrente da fonte de Corrente

Pd

Permencia Dispersa

Pr

Permencia de Retorno

Nmero de Espiras

Sumrio
1
1.1
1.2
1.3
1.4

INTRODUO . . . . . . .
Consideraes Iniciais . . .
Objetivos . . . . . . . . . . . .
Trabalhos Relacionados . .
Apresentao do trabalho .

2
2.1

REFERENCIAL TERICO . . . . . . . . . . . . . . . . . . . . 18
ATP - Alternative Transient Program . . . . . . . . . . . . . . . . 18

2.1.1

. . . . . . . . . . . . . . . . . . . . . .
MODELS . . . . . . . . . . . . . . . . . . . . . .
Modelo Bsico de Transformadores . . . . .
Modelagem de transformadores no lineares
. .

2.1.2

2.2
2.2.1

2.3
2.3.1

2.4
3
3.1
3.2
3.3
3.4
3.5

. . . . . . . . . . . . . . . . . . . . .
.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
Circuito Equivalente Magntico Unicado (UMEC) .
Anlise de transformador UMEC . . . . . . . . . . . . . . . .
Aproximao linear por partes . . . . . . . . . . . . . . .
ATPDraw

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

MODELAGEM DE REATORES NATURALMENTE SATURADOS UTILIZANDO O UMEC NO ATP . . . . . . . . . . .


Modelo UMEC para reator monofsico naturalmente saturado
com 1 enrolamento . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelo UMEC para reator monofsico naturalmente saturado
com 2 enrolamentos . . . . . . . . . . . . . . . . . . . . . . . . . . . .
Modelo UMEC para reator trifsico naturalmente saturado
com 6 enrolamentos e dois retornos . . . . . . . . . . . . . . . . . .
Modelo UMEC para reator trifsico naturalmente saturado
com 9 enrolamentos e dois retornos . . . . . . . . . . . . . . . . . .
Modelo UMEC para reator trifsico com congurao em
monobloco naturalmente saturado com 12 enrolamentos e dois
retornos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

13
13
14
15
17

19
22

26
28

29
30

34
38
39
43
46
50
54

4
4.1

BIBLIOTECA RLIB . . . . . . . . . . . . . . . . . . . . . . . . . 59
Consideraes Importantes Sobre a Linguagem Models . . . . . 59

4.1.1

Implementao de subrotinas.

4.1.2

4.2
4.2.1

. . . . . . . . . . . . . . .
Representao de matrizes retangulares. . . . . . . . . .
Viso Geral da Arquitetura da Biblioteca RLib .
Pacote para operaes sobre matrizes - RLibAux . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

59
62

64
64

70

4.2.3

Integrao de Modelos de RNS com

. . . . . . . . . . . . . . . . . . . .
a Biblioteca RLIB . . . . . . . . .

5
5.1
5.2
5.3
5.4
5.5

ESTUDOS DE CASO . . . . . . . . . . . . . . . . . . . . . . . .
RNS monofsico com um enrolamento . . . . . . . . . . . . . . . .
RNS monofsico com dois enrolamentos . . . . . . . . . . . . . . .
RNS trifsico com seis enrolamentos . . . . . . . . . . . . . . . . .
RNS trifsico com nove enrolamentos . . . . . . . . . . . . . . . .
RNS trifsico em Monobloco com Doze Enrolamentos . . . . .

77
77
81
85
86
88

6
6.1

CONCLUSO . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
Sugestes para trabalhos futuros . . . . . . . . . . . . . . . . . . . 92

A
A.1
A.2
A.3

CDIGO FONTE DA BIBLIOTECA RLIB . . . . .


Cdigo Fonte do Modelo para Inverso de Matrizes
Cdigo Fonte da Biblioteca RLib . . . . . . . . . . . .
Codigo de Reatores Naturalmente Saturados . . . .

4.2.2

Comportamento da Biblioteca RLIB

73

. . . . . .

93
. . . . . . . 93
. . . . . . . 95
. . . . . . . 107

REFERNCIAS . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

13

1 Introduo
Este captulo apresenta uma breve introduo do trabalho proposto. Entre os conceitos
apresentados temos uma apresentao da motivao do trabalho, o objetivo do mesmo e os
trabalhos relacionados.

1.1 Consideraes Iniciais


O crescimento da demanda de energia nos sistemas eltricos de potncia tem exigido das
concessionrias a implantao de novos recursos de transmisso para atendimento da demanda
de forma satisfatria. Uma particularidade dos longos sistemas de transmisso de alta tenso
a precria regulao oferecida nas barras de consumo. Na operao em plena carga, ocorre
uma reduo, por vezes, extrema da tenso. Por outro lado, o sistema na operao em vazio ou
com pouca carga, e devido ao grande comprimento da linha e a capacitncia associada apresenta
elevaes na tenso terminal, muitas vezes, intolervel.
Para inibir este comportamento indesejado, medidas corretivas devem ser utilizadas
para restaurar os padres exigidos e, neste campo, a regulao de tenso um tema de grande
relevncia. Uma alternativa comumente empregada pelas empresas de energia a compensao
de reativos, em que utilizam reatores e capacitores conectados em derivao no terminal da carga,
permitindo um controle de tenso local (FONTE, 1997).
A atuao dos reatores de proibir que a tenso se eleve a valores inadmissveis,
entretanto, os capacitores atuam de forma a inibir a tenso de baixar alm do permitido. Mesmo
sendo uma prtica comum este tipo de regulao de tenso, apresenta desvantagens, tais como:
A regulao de tenso por meio desse procedimento utiliza um bloco desses elementos
por vez.
Sempre que o carregamento do sistema experimentar mudanas considerveis, este tipo
de compensao ter a necessidade de executar manobras de injeo ou remoo de
equipamentos. Assim, quando a carga suprida pela linha sofrer uma elevao, os reatores
devero ser gradativamente retirados de operao para conter a reduo da tenso, enquanto
os capacitores devem seguir uma manobra similar quando houver reduo do consumo
energtico no sistema.
Para resolver os inconvenientes mostrados anteriormente, uma soluo vivel
corresponde ao uso de compensadores eletrnicos (FONTE, 1997). Embora tecnicamente
atrativos, os elevados custos de aquisio e manuteno desses equipamentos se mostra uma
soluo de difcil aceitao.

14

Captulo 1. Introduo

Uma outra alternativa para a compensao de reativos, seria a utilizao de Reatores


Naturalmente Saturados (RNSs) que so mais baratos, possuem manuteno de baixo custo,
elevada confiabilidade e alta resistncia a intempries (BRASIL, 1996). Seu princpio de
funcionamento mostrado na Figura 1 que apresenta as caractersticas de tenso (V ) e corrente
(I) do RNS.
Figura 1 Caracterstica de saturao intrnseca ao material magntico.

Fonte: (ARAUJO; NEVES, 2005)


Quando o reator est submetido a condio de plena carga, ele funcionar na vizinhana
do ponto (Vs , I ), demandando, dessa forma, uma potncia bem pequena do sistema. Porm,
quando a carga do sistema diminui, a tenso experimenta uma elevao correspondente, o que
desloca o ponto de operao do reator para as proximidades do ponto (Vn , In ). Isso eleva o seu
consumo numa proporo ditada pela inclinao da sua curva caracterstica, a qual, em princpio,
poder ser especificada para satisfazer o nvel de compensao desejada. Segundo (MAIA et al.,
2012), tal comportamento, alm de ensejar um controle contnuo da tenso dentro de patamares
determinados, disponibiliza a capacidade da linha de transmisso para o atendimento das cargas.

1.2 Objetivos
Os principais equipamentos que so utilizados para regulao de tenso,compensadores
eletrnicos e reatores saturados, possuem complexidade em fazer simulaes computacionais
para sua representao. Um dos motivos deve-se a sua natureza no linear. Uma ferramenta
computacional muito utilizada para simulaes de transitrios no sistema eltrico a ferramenta
Alternative Transient Program (ATP). Porm, para representar modelos de reatores naturalmente
saturados no ATP, usurios necessitam realizar uma modelagem indireta por meio de outros
componentes, tais como, o indutor no linear para representar reatores monofsicos ou
transformador saturvel para representar reatores trifsicos.

Captulo 1. Introduo

15

Buscando uma alternativa para representar reatores saturados na ferramenta ATP. Este
trabalho tem por finalidade a criao de uma biblioteca construda na linguagem MODELS
do programa ATP que represente modelos de reatores a ncleo saturados, que suporte as
caractersticas magnticas, quantidades de enrolamentos e diferentes quantidades de ncleos.
A linguagem MODELS uma ferramenta de simulao de componentes criados pelo prprio
usurio. Este tipo de linguagem gera bastante interesse nos usurios pois, proporciona uma
flexibilidade de utilizao de uma linguagem de programao de alto nvel sem precisar interagir
de forma direta com o cdigo fonte da ferramenta ATP. Assim, usurios ficam livres para criar
bibliotecas de modelos e sub modelos em funo de cada uma das aplicaes.
Este trabalho uma extenso de (DELFIN, 2014) que props uma modelagem de
reatores naturalmente saturados utilizando circuito UMEC na linguagem MODELS no ATP.
Apesar do pioneirismo do trabalho desenvolvido pela autora, os modelos apresentados possuem
caractersticas que dificultam a reutilizao e entendimento dos cdigos propostos. Dessa forma,
a criao e simulao de um novo modelo de RNS, tomando como base os modelos apresentados
no trabalho, representa uma tarefa de difcil execuo.
Por conta dessa falta de padronizao e utilizao de subrotinas, os cdigos empregados
se tornaram extensos, de difcil legibilidade e manutenabilidade. Para contornar as questes
destacadas acima, uma biblioteca proposta para facilitar a implementao de reatores a ncleo
saturados de diferentes configuraes. Esta biblioteca permite a criao de modelos de RNS na
linguagem MODELS de forma simplificada.
Especificamente os objetivos deste trabalho so:
Desenvolvimento de uma biblioteca responsvel para facilitar a criao de modelos de
reatores naturalmente saturados na linguagem MODELS do software ATP.
Desenvolvimento de mltiplas configuraes de reatores ncleo saturado, variando-se o
nmero de enrolamentos e o arranjo utilizado.
Simulaes dos modelos construdos.
Comparaes dos resultados obtidos nas simulaes com componentes similares utilizados
no programa ATP.

1.3 Trabalhos Relacionados


Nos ltimos anos, alguns autores tm dedicado esforos para estudar questes sobre
reatores saturados. Em (BRASIL, 1996) foi desenvolvido um modelo de reator saturado no
programa de transitrios eletromagnticos EMTP-ATP (verso anterior do ATP), que verifica a
viabilidade da utilizao do mesmo em simulaes com regime transitrios e permanentes. Na

Captulo 1. Introduo

16

verdade, a diferena entre o EMTP e o ATP se d mais pela interface mais amigvel da segunda.
Logo, as duas verses realizam os mesmos tipos de simulaes.
Magnata (FONTE, 1997) props um aprofundamento terico relacionado a reatores
saturados estudando seu comportamento, tipos de ligaes e como atenuar os harmnicos
gerados pelos reatores.
Em (FONTE, 2004), o autor descreve o modelo matemtico dos reatores saturados,
projeta e constri prottipos de reatores com saturao natural em laboratrio acadmico. Um
dos focos do trabalho est na anlise do desempenho dos prottipos e conferncia dos seus
resultados com estudos realizados anteriormente pelo autor.
(BARBOSA, 2009) analisa o comportamento de compensadores estticos utilizando
reatores saturados. Os estudos realizados evidenciaram que nas condies impostas, o tempo de
resposta do reator se mostrou compatvel com as referncias encontradas na literatura. O reator
saturado demonstrou claramente sua propriedade de regulao de tenso, bem como apresentou
gerao de harmnicos quando na condio de saturao.
O trabalho apresentado em (PACHECO et al., 2007) tem por finalidade projetar e analisar
o desempenho de um reator saturado de 570 kVAr e 13,8 kV utilizado para regulao de tenso.
Quando comparados com outros equipamentos, segundo autores, o novo produto demonstra
expressivos ganhos, principalmente em relao s perdas, rendimentos, temperaturas de operao.
(BARBOSA et al., 2010) prope uma estratgia para a modelagem computacional
de reatores a ncleo saturado utilizando a plataforma ATP. Visando o estabelecimento de
mecanismos para validao dos desempenhos computacionais obtidos, estes so correlacionados
com medies em um prottipo de 600 kVAr e 13,8 kV. Os autores mostraram que as
caractersticas operativas e representativas das correlaes entre as potncias reativas e correntes
absorvidas pelo equipamento, diante de distintos nveis de tenses aplicadas, ratificaram o bom
desempenho do modelo computacional.
A dissertao apresentada em (FREITAS, 2010) descreve arquiteturas e funcionalidades
inditas para dispositivos que empregam reatores naturalmente saturados como elemento de
controle. Os resultados obtidos pelos experimentos da aplicao de reatores em srie funcionando
como limitador de corrente de curto circuito comprovam que este dispositivo extremamente
eficaz na conteno de curto circuitos, podendo promover variados nveis de reduo.
Neves et al. (HERMANN, 1993) mostra um algoritmo para calcular as caractersticas de
saturao de transformadores de ncleo de ferro, baseado nas curvas convencionais (V timesI)
fornecidas. Um mtodo direto para o clculo de curvas de saturao do ncleo de ferro ( I)
foi apresentado e fundamento em bases de testes de transformador.
Diferente dos anteriores, esse trabalho prope uma modelagem para representao de
reatores naturalmente saturados de diferentes configuraes utilizando a modelagem UMEC .
Alm disso, foram desenvolvidas as respectivas implementaes na linguagem MODELS do

Captulo 1. Introduo

17

programa ATP. Para auxiliar o processo de modelagem e avaliaes das matrizes relacionada aos
modelos propostos, foi desenvolvida uma biblioteca denominada Rlib que permite a criao de
novas implementaes de reatores a ncleo saturado.
Segundo nossos melhores conhecimentos e intenes, esta a primeira vez que se
tentam fazer uma abordagem unificada que rene modelos do tipo UMEC para RNS, suas
implementaes na linguagem MODELS e uma biblioteca que permite criao de novos modelos.

1.4 Apresentao do trabalho


A estrutura do documento dividida em sete captulos, conforme exposto a seguir:

Captulo 2 - Apresenta os princpios bsicos do programa ATP, relaciona alguns conceitos


sobre modelos de transformadores, apresenta o modelo UMEC, explica como realizada
a inverso de matrizes na linguagem MODELS do ATP. Por fim, apresenta a teoria da
linearizao por trechos utilizada nesse trabalho.

Captulo 3 - Descreve a modelagem matemtica de cinco reatores saturados. Iniciando os


estudos com reatores monofsicos e finalizando com a modelagem de um reator trifsico
de doze enrolamentos com configurao em monobloco.

Captulo 4 - Trata-se da criao de uma biblioteca na linguagem MODELS que possui


mdulos para clculos envolvendo matrizes retangulares e um mdulo especfico para o
clculo das interaes eletromagnticas dos reatores naturalmente saturados.

Captulo 5 - Apresenta as simulaes dos reatores saturados modelados neste trabalho,


igualmente compara-se os resultados com modelos utilizados no programa ATP.

Captulo 6 - Consiste de algumas consideraes finais acerca do trabalho, alm de sugestes


relevantes para a continuao de pesquisas relacionadas modelagem de reatores saturados.

18

2 Referencial Terico
2.1 ATP - Alternative Transient Program
A utilizao de softwares de simulao para anlises de sistemas eltricos de potncia
constitui um fator de grande importncia na formao de engenheiros eltricos, dado que
permite o estudo antecipado do comportamento de sistemas reais. Porm, deve-se considerar
que softwares de simulao so uma ferramenta complementar aos estudos tericos e na atuao
prtica. Assim, faz-se necessrio uma correta interpretao e anlise dos resultados de cada
simulao.
O ATP um dos sistemas mais utilizados para simulao digital de fenmenos transitrios
eletromagnticos, bem como de natureza eletromecnica em sistemas eltricos de potncia.
Com este programa, redes complexas e sistemas de estrutura arbitrria de controle podem ser
simulados, e suas respectivas mtricas so calculadas em tempos discretos. O ATP tem uma
ampla capacidade de modelagem, alm de fazer clculos de transientes.
O aplicativo no do domnio pblico, porm qualquer pessoa que no tenha o propsito
de utiliz-lo para fins comerciais pode instalar e utilizar o programa sem nenhum custo. O ATP
analisa variveis de interesse em redes de energia eltrica em funo do tempo, geralmente
iniciadas por alguns distrbios. Para resolver equaes diferenciais no domnio do tempo, o ATP
utiliza basicamente a regra de integrao trapezoidal (KRAUSE; AMBLER; FOX, 1993).
Este programa realiza anlises de transitrios, frequncias, harmnicos e estatsticas. A
ferramenta apresenta uma biblioteca de componentes eltricos prontos para serem utilizados
pelo usurios. O principais componentes da biblioteca so:
Componentes de resistncias, capacitncias e indutncias concentradas.
Modelos de linhas de transmisso areas ou cabos.
Componentes no-lineares: transformadores, incluindo saturao e histerese, pra-raios,
indutncias e resistncias.
Fontes ideais de corrente e de tenso - sinusoidais, exponenciais, degrau, tipo rampa.
Mquinas rotativas: mquina sncrona trifsicas, modelo de mquina universal.
Vlvulas (diodos, tiristores, os triacs), TACS/MODELS e chaves controladas.
O arquivo de entrada de dados do software ATP geralmente possui a terminao .ATP
(ou .DAT), exceto arquivos criados pelo ATPDraw (Seo 2.1.1) que possuem extenso .ADP. Os

19

Captulo 2. Referencial Terico

arquivos de sada do ATP possuem a terminao .LIS para os resultados impressos e a terminao
.PL4 para a visualizao dos grficos. Atravs de uma tabela de valores de arquivos .PL4, grficos
podem ser produzidos atravs do programa PlotXY (presente no software ATP) Figura 2. No
PlotXY, o usurio pode escolher mtricas (e.g., BN1, ou HN1) e plotar a variao dessa mtrica
ao longo do tempo t ou em relao a outra varivel (lista de variveis no lado esquedo da Figura
2).
Figura 2 Arquivo PlotXY

Fonte: Prprio Autor

2.1.1

ATPDraw

Como dito anteriormente, o ATP utiliza arquivos de entrada do tipo .ATP ou


.DAT. Esses arquivos so textuais e no so simples de serem manipulados. Para facilitar
a criao/manipulao de esquemas do ATP, a ferramenta grfica ATPDraw (PRIKLER;
HOILDALEN, 2002) foi criada. O aplicativo apresenta a maioria dos componentes eltricos que
so utilizados na modelagem de circuitos de potncia do ATP e foi desenvolvido para simplificar
a modelagem de circuitos eltricos de potncia no ATP. O circuito armazenado no disco em
um nico arquivo de projeto, que inclui todos os objetos de simulao e opes necessrias para
simular o sistema. Na inexistncia de componentes j prontos na biblioteca, o usurio atravs da
linguagem Models pode criar seus prprios modelos.
O ATPDraw admite sistemas em circuitos monofsicos ou trifsicos e possui as funcionalidades
do sistema operacional Windows: copiar, colar, girar, importar, exportar, agrupar, desfazer, entre
outros. A janela principal do programa visualizada na Figura 3. O menu principal do ATPdraw
composto por:

20

Captulo 2. Referencial Terico

Figura 3 Janela principal

Fonte: Prprio Autor


File - permite criar novos circuitos eltricos, salvar ou abrir um arquivos criado
anteriormente, fechar arquivos, importar elementos, fechar o programa.
Edit - contm as funes bsicas de edio, por exemplo: copiar/colar, desfazer/refazer,
duplicar, escolher, apagar, adicionar texto, etc.
View - configura a visualizao das janelas, zoom, tipo de letra dos componentes,
atualizao de mudanas no circuito, e opes para personalizar as janelas de desenho.
ATP - executa o programa, cria nomes para todos os ns do sistema simulado, gera ou
edita arquivos .ATP, especifica qual a configurao desejada para simulao do sistema
criado.
Library - permite criar e/ou modificar componentes j existentes ou aqueles que foram
criados pelo usurio.
Tools - ferramentas de edio de texto, edio de imagens e pode-se configurar a interface
do ATPDraw.
Windows - O usurio pode selecionar a janela correspondente a cada circuito e ativar ou
desativar uma janela do sistema.

21

Captulo 2. Referencial Terico

Help - O usurio pode solicitar informao de ajuda do ATPDraw.


ATPDraw suporta modelagem hierrquica de componentes, substituindo um grupo de
objetos por um nico cone em um nmero quase ilimitado de camadas. Suporta at 10.000
componentes, cada um com no mximo 64 dados e 32 ns (PRIKLER; HOILDALEN, 2002).
A Figura 4 detalha alguns componentes que podem ser utilizados no programa, tais como:
Componentes Standard (Probes & 3-phase), Ramais Lineares (Branch Linear), Ramais NoLineares (Branch Nonlinear), Linhas e Cabos (Lines/Cables), Interruptores (Switches), Fontes
(Sources), Mquinas (Machines), Transformadores (Transformer), entre outros.
Figura 4 Menu suspenso de componentes do programa ATPdraw

Fonte: Prprio Autor


Na Figura 5, mostrado um exemplo bsico de circuito criado no ATPDraw, seus
grficos so plotados no programa PlotXY (Figura 6) que permite representar at 8 curvas
no mesmo grfico, tambm possvel representar na mesmo grfico curvas com mtricas de
at trs arquivos diferentes. As curvas so apresentadas em diferentes cores para uma melhor
visualizao dos dados. No programa PlotXY, tambm possvel analisar os harmnicos, basta
acionar a opo FOUR (circulado em vermelho na Figura 6) que os grficos de Fourier so
mostrados. Por fim, a Figura 7 apresenta o cdigo fonte respectivo ao modelo da Figura 5. Para
mais detalhes relacionados as ferramentas ATP e ATPDraw o leitor referido as referncias
(KRAUSE; AMBLER; FOX, 1993) e (PRIKLER; HOILDALEN, 2002).

22

Captulo 2. Referencial Terico

Figura 5 Circuito bsico no ATPdraw

Fonte: Prprio Autor


Figura 6 Visualizador de resultados do ATPdraw

Fonte: Prprio Autor


2.1.2

MODELS

A MODELS uma liguagem de programao criada para simular sistemas no domnio do


tempo e descrever comportamentos dinmicos de sistemas fsicos de alta complexidade (DUB,
1996). No programa ATP, esta linguagem permite o controle da operao dos componentes
eltricos do sistema simulado, tal como a criao de novos modelos. Ela tem a capacidade de
interligar o ATP com programas externos.
A linguagem MODELS possui como caractersticas:
Um extenso campo de variveis, que podem ser numricas, lgicas, escalares ou matriciais.
Uma sintaxe regular para o uso de variveis, matrizes, expresses e funes.
A possibilidade de especificar operaes que s so executadas quando estiverem reunidas
algumas condies, como por exemplo quando forem detectados erros.
A linguagem gerencia automaticamente o armazenamento e recuperao de valores
histricos das variveis de um modelo, conforme necessrio durante a execuo da

23

Captulo 2. Referencial Terico

Figura 7 Editor de texto do ATPdraw

Fonte: Prprio Autor


simulao.
Instncias individuais dos modelos de um sistema automaticamente atualizam o seu
funcionamento de acordo com o aumento do valor do tempo de simulao.
Uma srie de funes pr-definidas com base no tempo so disponveis, tais como, integrais,
derivadas, equaes diferenciais, operadores de Laplace e funes de transferncia Z.
A MODELS uma ferramenta para o desenvolvimento de modelos de componentes de
circuito e de controle que no pode ser construda facilmente com o conjunto de componentes
existentes disponveis na ATP e TACS. Ela possui a flexibilidade de uma linguagem de programao completa sem ter que interagir com ATP ao nvel de programao. Proporciona uma
interface de programa no ATP definido no nvel de modelagem em termos de tenses, correntes
e sinais de controle, em oposio a uma interface que seria definido ao nvel de programao em
termos de variveis, blocos comuns, e sub-rotinas do ATP (DUB, 1996).
Esta linguagem faz com que seja possvel ligar programas externos com o ATP para
a modelagem de componentes, o acesso a medies, ou interao com equipamentos, sem a
necessidade de um conhecimento de programao da operao interna de ATP e sem necessidade

Captulo 2. Referencial Terico

24

de qualquer modificao para ser feito com o cdigo fonte de ATP (DUB, 1996).
Tal como a MODELS, a linguagem de programao TACS tambm simula sistemas
de controle utilizando algoritmos. Porm a TACS, no fornecem um mecanismo para resolver
conjuntos de equaes simultneas no lineares. Qualquer loop envolvendo um dispositivo
no-linear cortado automaticamente para que possa caber na soluo de matriz linear da TACS.
Isso implica em atrasos de uma iterao nas sadas dos dispositivos no-lineares. Dependendo
do tamanho do passo do tempo e da natureza do sistema simulado, as consequncias desta
abordagem podem variar a sada de forma satisfatria deixando o resultado numericamente
instvel, por este motivo esta linguagem entrou em desuso.
A liguagem MODELS bastante semelhante a linguagem FORTRAN E PASCAL. Suas
instrues podem ser vistas no exemplo Cdigo Fonte 2.1:
1
2 MODEL proc_example
3
DATA inival {dflt:0}
4
INPUT x
5
VAR y
6
7
INIT -- this is executed when the instance is created or first USEd
8
integral(x) := inival
9
ENDINIT
10
11
EXEC -- this is the default operation procedure,
12
-- executed when the instance is used from a USE statement
13
y := integral(x)
-- assigns value of integral to y
14
self.write_y
-- calls the procedure write_y
15
ENDEXEC
16
17
PROC write_y
18
write(In model proc_example, y=, y)
19
ENDPROC
20
21
PROC reset_integral(resetval)
-- uses one input argument
22
integral(x) := resetval
-- resets the value of the integral
23
ENDPROC
24
25
PROC integral_value
26
integral_value := integral(x) -- returns the value of the integral
27
ENDPROC
28
29 ENDMODEL

Cdigo Fonte 2.1 Exemplo de utilizao de submodelos localmente definidos


O parmetro DATA so valores constantes de um modelo, como parmetros e dimenses
da matriz, definidos quando uma nova instncia de um modelo criada em uma instruo USE.
DATA usado para a realizao de valores que so definidos no exterior do modelo, e que no

Captulo 2. Referencial Terico

25

variam durante a simulao. Os nomes dos elementos de DATA so visveis dentro do modelo,
onde eles so declarados. O seu valor atribudo no procedimento USE, uma vez atribudo,
valores de dados no variam no tempo. O seu valor constante ao longo do comprimento total
de uma simulao, um valor padro tambm pode ser opcionalmente atribudo dentro do modelo,
na declarao. Quando existe um valor padro para um elemento de dados, que a atribuio de
elemento de um valor na instruo USE opcional.
1
2 DATA n
3 DATA freq {dflt: 60}

-- uma dimenso de matriz utilizada no modelo


-- uma frequncia em Hz

Cdigo Fonte 2.2 Exemplo de utilizao do elemento DATA


O parmetro INPUT so entradas usadas para a realizao de valores que so definidos
no exterior do modelo, e que varia durante a simulao. Os nomes dos elementos INPUT so
visveis no interior do modelo onde eles so declarados, e tambm nas demonstraes USE
do modelo. Seu valor atribudo nas demonstraes USE. Um valor padro tambm pode ser
opcionalmente atribudo dentro do modelo, na declarao. Quando existe um valor padro para
um elemento de entrada, atribuir esse elemento um valor na instruo USE opcional. Valores
de entrada so automaticamente recalculados na declarao USE cada vez que a instncia USE
chamado.
1
2 DATA n
3 INPUT vterm[1..n]
4
vref {dflt: 0}

-- numeros de terminais
-- valor das tenses nos terminais
-- valor de tenso de referncia igual a zero, se no for usado.

Cdigo Fonte 2.3 Exemplo de utilizao do elemento INPUT


Os nomes das variveis VAR s so visveis dentro do modelo em que elas so declaradas,
exceto quando eles so declarados como OUTPUT. Seu valor pode ser atribudo em qualquer
declarao dentro do modelo. Uma vez atribudo um valor, uma varivel mantm esse valor
durante o simulao, at que seja atribudo um novo valor. Continuando com o exemplo anterior,
pode-se controlar as tenses de entrada para amplitude mxima para cada terminal, digamos, e o
mximo para todos terminais. Definindo as variveis vtmax e vmax:
1
2 DATA n
3 INPUT vterm[1..n]
4
vref {dflt: 0}
5 VAR vtmax[1..n]
6
vmax

------

numeros de terminais
valor das tenses nos terminais
valor de tenso de referncia igual a zero, se no for usado.
Valor maximo absoluto de cada tenso terminal
Valor maximo absoluto de todas as tenses terminais

Cdigo Fonte 2.4 Exemplo de utilizao do elemento VAR


As variveis podem ser declaradas como sada de um modelo. Os nomes das variveis
declarados como OUTPUT so visveis para os parmetros USE que definem os casos do modelo.

26

Captulo 2. Referencial Terico

Nenhuma outra varivel visvel fora do modelo. Continuando o exemplo, os valores de vtmax
e vmax podem ser especificada como a sada do modelo, como mostrado a seguir:
1
2
3
4
5
6
7

DATA n
-INPUT vterm[1..n]
-vref {dflt: 0} -VAR vtmax[1..n]
-vmax
-OUTPUT vtmax[1..n], vmax

numeros de terminais
valor das tenses nos terminais
valor de tenso de referncia igual a zero, se no for usado.
Valor maximo absoluto de cada tenso terminal
Valor maximo absoluto de todas as tenses terminais
-- pode ser usado como sada do modelo

Cdigo Fonte 2.5 Exemplo de utilizao do elemento OUTPUT


A instuo EXEC o procedimento operacional principal do modelo, chamado quando
necessrio atualizar uma instncia do modelo para um novo tempo de simulao. Ele chamado
automaticamente cada vez que uma instruo USE executado. Descreve como o modelo funciona como incremento do tempo. Finalizando a execuo com a instruo ENDEXEC.

1
2 INPUT voltage, current
3
VAR flux, energy, power, gen_1
4
INIT
5
integral(voltage) := 0
6
integral(power)
:= 0
7
ENDINIT
8
EXEC
9
flux
:= integral da tenso
10
energy := integral da potncia
11
power := voltage * current
12
ENDEXEC
13 ENDMODEL

Cdigo Fonte 2.6 Exemplo de utilizao do elemento EXEC


Para mais detalhes sobre a linguagem MODELS, o leitor referido a (DUB, 1996).

2.2 Modelo Bsico de Transformadores


O circuito equivalente bsico de um modelo de transformador mostrado na Figura 8.
As tenses atravs destas bobinas expressa na Equao 1.
" # "
# " #
v1
L11 L12 d i1
=
v2
L21 L22 dt i2

(1)

27

Captulo 2. Referencial Terico

Figura 8 Circuito equivalente de transformador de dois enrolamentos

Fonte: (SWIFT, 1971)


Descrevendo a Equao 1, L11 e L22 representam as indutncias prprias dos
enrolamentos primrio e secundrio do transformador. L12 e L21 so as indutncias mutuas
entre os enrolamentos. As correntes que passam nos enrolamentos primrios i1 e secundrios i2
so expressadas na Equao 2.
" #
"
#" #
L22 L12
v1
1
d i1
=
dt i2
L12 L21 L11 L22 L21 L11 v2

(2)

Como o acoplamento mtuo bilateral, L12 e L21 so idnticos. Usando a relao de


transformao a = v1 /v2 da Equao 1 , chega-se a:
L1 = L11 aL12

(3)

L2 = a2 L22 aL12

(4)

Separando as Equaes 3 e 4 de acordo com seus componentes, temos:


di1
L22
L21
=
v1
v2
dt
L11 L22 L12 L21
L11 L22 L12 L21

(5)

di2
L12
L11
=
v1 +
v2
dt
L11 L22 L12 L21
L11 L22 L12 L21

(6)

Resolvendo a Equao 5 utilizando a regra de integrao trapezoidal (COGO; OLIVEIRA,


1983), tm - se que a corrente que passa no enrolamento primrio :
L22
i1 (t) =
L11 L22 L12 L21

Z
0

L21
v1 dt
L11 L22 L12 L21

v2 dt
0

(7)

28

Captulo 2. Referencial Terico

L22
= i1 (t t) +
L11 L22 L12 L21

= i1 (tt)+

L21
v1 dt
L11 L22 L12 L21
tt

v2 dt
tt

L22 t
L21 t
(v1 (tt)+v1 (t))
(v2 (tt)+v2 (t))
2(L11 L22 L12 L21 )
2(L11 L22 L12 L21 )

De forma similar, pode-se estender os conceitos para determinar a corrente i2 (t). A


modelagem dessas equaes pode ser vista na Figura 9. Deve-se observar que a discretizao
desses modelos usando a regra trapezoidal no permite completa isolao entre os terminais
da fonte. Se a fonte d.c aplicada no enrolamento primrio uma pequena parte segue para o
enrolamento secundrio.
Figura 9 Transformador equivalente depois da discretizao

Fonte: (WATSON JOS ARRILLAGA, 2007)


Atravs de testes de curto-circuito e circuito aberto as informaes de aL12 ,L1 e L2 so
adquiridas. Em programas de simulaes esses testes so realizados internamente e o usurio
entra apenas com os valores de reatncia de disperso e magnetizante. A matriz de indutncia
fornece informaes sobre as correntes magnetizantes e tambm, a indutncia de disperso.

A indutncia de disperso dada pela Equao 8:


Ldisperso = L11 L221 /L22

(8)

Os valores da matriz de indutncia devem ser especificados com muita preciso para
reduzir os erros causados pela subtrao de dois nmeros.
2.2.1

Modelagem de transformadores no lineares

Os efeitos da no linearidade magntica e das perdas nos ncleos dos transformadores


so representados pela fonte de corrente shunt e resistncia equivalente no enrolamento. A

29

Captulo 2. Referencial Terico

aproximao monofsica no incorpora acoplamento magntico entre as fases e a injeo de


corrente magnetizante calculada em cada passo de tempo independente das outras fases.
Para evitar uma retriangulao da matriz indutncia (HERMANN, 1993) toda vez que
as indutncias mudarem, a representao da fonte de corrente utilizada. No momento da
inicializao desejvel inibir a saturao, atravs de um limite de fluxo derivado da integrao
da tenso, permitindo assim, que o estado estacionrio chegue rapidamente. Depois, este limite
retirado permitindo que o fluxo v para a regio de saturao. A Figura 10 mostra a saturao no
enrolamento mutuamente acoplado.
O programa de simulao EMTP utiliza o princpio da dualidade para obter informaes
da corrente de magnetizao e configuraes dos ncleos de transformadores de mltiplas pernas.
Porm, este mtodo envolve grande quantidades de componentes, tornando sua implementao
complexa.
Para reduzir a complexidade exigida pelo mtodo da dualidade um modelo baseado no
equivalente de Norton, derivado diretamente de anlises de circuitos magnticos. O chamado
modelo UMEC(circuito equivalente magntico unificado). Esclarecendo que ambos os mtodos
apoiam-se diretamente na arquitetura dos circuitos magnticos. Porm, o modelo UMEC utiliza
um processamento prprio.
Figura 10 Transformador no linear

Fonte: (WATSON JOS ARRILLAGA, 2007)

2.3 Circuito Equivalente Magntico Unicado (UMEC)


A maioria dos programas de simulaes utilizam modelos de transformadores convencionais, baseados nos seus componentes(resistores e indutores). Nesses modelos seus parmetros
so obtidos de forma fcil, atravs de testes de curto-circuito e circuito aberto. Porm, para
transformadores de mltiplos ncleos, onde o fluxo se distribui de forma desigual este modelo

30

Captulo 2. Referencial Terico

no representa o transformador de forma adequada.


Diferente do modelo citado, o modelo de transformadores de Circuito Equivalente Magntico Unificado (UMEC) baseia-se na geometria do ncleo ferromagntico. Ele emprega os
efeitos de acoplamento magntico entre os enrolamentos(de mesma fase e fases diferentes), e os
efeitos da saturao. Dessa forma, gera uma matriz de indutncia e cria um circuito equivalente
mais adequado. Caracterizando melhor o comportamento do transformador em um sistema
eltrico (HORITA, ).

2.3.1

Anlise de transformador UMEC

A Figura 11 representa o circuito magntico de um transformador monofsico de


dois enrolamentos e a Figura 12 mostra o respectivo circuito equivalente magntico unificado
(UMEC).
Figura 11 caminhos de fluxos magnticos no ncleo

Fonte: Prpria
Na Figura 11 as tenses relativas v1 (t) e v2 (t) dos enrolamentos primrio e secundrio
so usadas para calcular os fluxos 1 (t) e 2 (t) em cada enrolamento.
O fluxo 1 relacionado ao enrolamento primrio dividido em fluxo no jugo (3 ) e fluxo
de disperso (4 ). De forma similar, o enrolamento 2 possui o fluxo que o percorre (2 ), fluxo
que percorre o jugo (3 ) e o fluxo disperso (5 ). Exibindo dessa forma que os fluxos no se
comportam de forma uniforme nos ncleos. Os jugos superiores e inferiores so considerados
iguais e possuem comprimentos Ly e rea de seo transversal Ay . Lw representa o comprimento
das colunas onde esto os enrolamentos e Aw a rea de seo transversal.
Na Figura 12 observa-se as fontes de foras magnetomotrizes N1 i1 (t) e N2 i2 (t) que
representam os enrolamentos primrio e secundrio. P1 e P2 representam as permencias
das colunas onde se encontram os enrolamentos. P3 representa a permencia nos jugos do

31

Captulo 2. Referencial Terico

Figura 12 Circuito equivalente (UMEC)

P3
+
P4

P1

P2

P5

+
-

Fonte: Prpria
transformador, P4 e P5 equivalem as permencias dispersas em cada enrolamento. A permencia
no ncleo calculada atravs da curva BxH.
O circuito magntico da Figura 12 pode ser representado pelo equivalente de Norton
mostrado na Figura 13 que adequado para implementao de transientes eletromagnticos. A
fora magnetomotriz em cada ramo da Figura 12 do circuito pode ser escrito em forma de vetor
como na Equao 9.
Figura 13 Equivalente de Norton do modelo UMEC

Fonte: Prpria

= [N ]i [R]

(9)

A representao do fluxo em um ramo do reator na forma de vetor demonstrado na


Equao 10. Sendo [P] a matriz diagonal contendo as permencias dos ramos e [N] a matriz
diagonal contendo os nmeros de enrolamentos.

= [P ]([N ]i )

(10)

32

Captulo 2. Referencial Terico

Para determinar a matriz de incidncia nodal [A], temos que em cada n os fluxos devem
somar zero:
[A]T = 0

(11)

Aplicando a matriz de ligao de ramos e ns do circuito, temos:


[A]nodal =

(12)

Multiplicando a Equao 10 por [A]T e substituindo nas Equaes 11 e 12, temos:


0 = [A]T [P ][N ]i [A]T [P ][A]nodal

(13)

Resolvendo a Equao 13 e multiplicando ambos os lados por [A] :


[A]nodal = ([A]T [P ][A])1 [A]T [P ][N ]i

(14)

Substituindo a Equao 13 na Equao 11 e em seguida na Equao 10, tem-se:


= [M ][P ][N ]i

(15)

[M ] = ([I] [P ][A]([A]T [P ][A])1 [A]T )[P ]

(16)

onde,

A matriz [M] no singular. O ramo divide-se em dois grupos, um com a fora


magnetomotriz onde est o enrolamento e o outro com relutncia pura, logo:
"

# "
#"
#"
#
s
[Mss ] [Msr ]
[Ps ] [0]
[Ns ]is
=
r
[Mrs ] [Mrr ]
[0] [Pr ]
[0]

(17)

O fluxo no brao do enrolamento s (t t) calculado atravs da corrente do


enrolamento utilizando a parte superior da Equao 17:
s = [M ][P ][Ns ]is

ss
s

(18)

s o vetor que contem os fluxos dos enrolamentos 1 e 2 . is o vetor que contem


a corrente nos enrolamentos i1 e i2 . [Ps ] representa o ramo da permencia atual. [Mss ] e [Ns ]
representam a matriz de permencia quadrtica e matriz diagonal das espiras nos enrolamentos.

33

Captulo 2. Referencial Terico

O fluxo nos jugos e os fluxos dispersos r (t t) so calculados utilizando a parte


inferior da Equao 17:

r = [Mrs
][Ps ][Ns ]is

(19)

Atravs da lei de Faraday, pode-se obter a tenso no enrolamento visto na Equao 20.
v=N

d
dt

(20)

Isolando o fluxo na Equao 20 e aplicando o mtodo da integrao trapezoidal (COGO;


OLIVEIRA, 1983) a Equao 20 fica:
s (t) =
s (t t) + dt [Ns ]1 [

vs (t) + vs (t t)]
2

(21)

A integrao trapezoidal utilizada para relacionar a tenso no enrolamento do


transformador com o fluxo magntico no enrolamento. Esta derivao adequada para programas
de simulaes eletromagnticas, onde, t o passo de tempo da simulao e vs o vetor da
tenso v1 e v2 no enrolamento. Cada tenso no enrolamento usada para calcular o fluxo
correspondente ao brao onde est o enrolamento.
Combinando as Equaes 21 e 18, obtm-se o equivalente de Norton:
is (t) = [Yss ]
vs (t) + ins (t)

(22)

onde,

][Ps ][Ns ])1


[Yss ] = ([Mss

dt
[Ns ]1
2

(23)

ins (t) = ([Mss


][Ps ][Ns ])1 (

dt
s (t t))
[Ns ]1 vs (t t) +
2

(24)

logo, para o UMEC da Figura 14 a Equao 22 representa:


"

# "
#"
# "
#
i1 (t)
Y11 Y12 v1 (t)
ins1 (t)
=
+
i2 (t)
Y21 Y22 v2 (t)
ins2 (t)

(25)

Representado pelo circuito equivalente de Norton do modelo UMEC. O circuito


equivalente de Norton ideal para simulaes dinmicas e a matriz admitncia simtrica [Yss ]
no diagonal, assim inclui acoplamento mtuo. Se necessrio, as perdas nos enrolamentos
podem ser representados pela adio de resistncias em srie nos terminais do equivalente de
Norton.

34

Captulo 2. Referencial Terico

Figura 14 a) caminhos de fluxos magnticos no ncleo. b) circuito equivalente (UMEC)


Fonte: Prpria

2.4 Aproximao linear por partes


Constantemente, simulaes de fenmenos transitrios solicitam a representao de
elementos no lineares, tais como, indutncias de ncleos de transformadores e reatores. Esses
elementos so usualmente tratados com a utilizao de aproximao linear por partes.
O indutor no linear, usado no programa ATP para representar reator naturalmente
saturado, tem seu ncleo de forma fechada, tal como um transformador com secundrio sem
enrolamentos. Nesse programa a curva x I do indutor no linear ( Figura 15 ) produzida
atravs de chaveamento de componentes. L1 e L2 mostrados na Figura 16 so inclinaes do
primeiro e segundo segmentos, respectivamente.
Idealmente , a chave S1 fecha em = 1 e abre quando a condio < 1 for atingida.
Com S1 aberta, a indutncia L1 reproduz a regio linear de 0 a 1 no eixo ; com a chave
fechada, o segmento em que < 1 reproduzido. A reproduo do segundo segmento no
trivial. Observa-se que, quando S1 fecha, embora a tenso nos terminais de L1 e L2 seja a
mesma, o fluxo, em cada elemento , diferente. No momento de fechamento da chave S1 , o
fluxo em L2 nulo.
O fluxo total enlaado na indutncia no-linear a integral da tenso entre seus terminais:
Z
(t) =

(26)

v(t)dt
0

Assumindo que ta o instante de acionamento da chave, essa equao a soma de duas


parcelas:
Z
(t) =

ta

v(t)dt +
0

v(t)dt
ta

(27)

35

Captulo 2. Referencial Terico

Figura 15 Curva do indutor no linear x I

Fonte: (ARAUJO; NEVES, 2005)


Figura 16 Circuito simulador

Fonte: (ARAUJO; NEVES, 2005)


A primeira parcela corresponde a 1 , a segunda ao fluxo enlaado L2 quando L2
conectado. Assim,
(t) = 1 + L2

(28)

No circuito da Figura 16, com a chave fechada, a corrente i no primeiro trecho dada
por:
i(t) = (t)/L1 + L2 (t)/L2

(29)

Substituindo L2 da equao 28 na equao 29, tem-se:


i(t) = (t)/L1 + (L2 (t) 1 )/L2

(30)

Considerando as caractersticas x i, para > 1 :


i(t) = i1 + ((t) 1 )/L02 = (t))/L1 + ((t) 1 )/L02

(31)

36

Captulo 2. Referencial Terico

Como,
i(t) = (t))/L1 + ((t) 1 )/L02 = (t))/L1 + ((t) 1 )/L2

(32)

Desse modo L2 = L02 // L1 , temos que a inclinao da curva x i no segundo segmento :


1/L02 = 1/L1 + 1/L2

(33)

Da mesma forma feito para diversos segmentos da curva x i.


Como demonstrado nas equaes anteriores o indutor no linear representado pelo
mtodo de aproximao linear por trechos na curva x i. Atravs dele, simula-se RNS
monofsicos no programa ATP.
Para a modelagem do UMEC usa-se parmetros da curva BxH e seu algoritmo proposto
pelo mtodo da aproximao linear por trechos ( Figura17 ).

37

Captulo 2. Referencial Terico

Figura 17 Algoritmo da Curva B H utilizando mtodo de aproximao linear por partes


Incio
Entradas:
n pontos da curva B H = {(bi , hi )|bi B, hi H, i {1, , n}}
Quantidade de espiras N N
rea do ncleo A R
Tenso de Entrada v(t) R
Permeabilidade por trechos.
Bi+1 Bi
i =
para i {1, , n}
Hi+1 Hi
Permeabilidade equivalente
para cada trecho.

i = n || n1 para i {2, , n}
Fluxo Magntico
B(t)
R
v(t)dt
B(t) =
AN
Clculo da densidade magntica H(t) para o B(t) correspondente
Bi1 < B(t) Bi
Bn1 B(t) Bn1
+
H(t) =

n1

n
Fim

Fonte: Prprio Autor

38

3 Modelagem de Reatores naturalmente


saturados utilizando o UMEC no ATP
Para simulaes de mquinas eltricas, tais como, transformadores e reatores
naturalmente saturados, de extrema importncia um bom entendimento de suas caractersticas
eletromagnticas, especificamente nos enrolamentos e nos ncleos. Neste captulo ser enfatizado
as propriedades magnticas destes equipamentos, seus comportamentos dinmicos e os efeitos
de saturao.
Primeiramente ser descrito o comportamento dinmico dos transformadores
monofsicos, posteriormente os trifsicos e por fim, os efeitos de saturao. Nas primeiras
simulaes realizadas nos programas de transitrios eletromagnticos foi assumido que os fluxos
eram uniformes atravs das pernas e dos jugos no ncleo dos transformadores. Os fluxos dispersos
nos enrolamentos individuais foram combinados e a corrente magnetizante foi inserida ao lado
da reatncia resultante srie de disperso. Um modelo para representar um transformador com
vrios ncleos tambm foi criado, baseado em circuito equivalente magntico unificado(UMEC)
implementado no programa ATP.
O reator naturalmente saturado calcula a permeabilidade magntica em cada passo de
tempo atravs da curva B H. As permencias do UMEC so calculadas pelas permencias
no ramo mostrada na Equao 1, permencias de disperso demonstrada pela Equao 2 e
permencias no retorno calculada pela Equao 3.
P =

Aw
Lw

(1)

Ld
N2

(2)

Ls
N1 N2

(3)

Pd =

Pr =

Os fluxos magnticos dispostos no modelo UMEC dividido em:


* Fluxo Magntico do ramo principal.
(4)

=BA
* Fluxo Magntico de disperso.
d = Pd (H L +

)
P

(5)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

39

* Fluxo Magntico de retorno.


r = Pr

d1 d2
+
Pd1 Pd2

(6)

* Fluxo Magntico no Jugo.


y = d

(7)

As equaes que vo da Equao 1 a 7 so utilizadas para montar o algoritmo do UMEC


desenvolvido na linguagem MODELS do programa ATP. Este algoritmo completo mostrado na
Figura 18.

3.1 Modelo UMEC para reator monofsico naturalmente


saturado com 1 enrolamento
A modelagem deste reator foi desenvolvida com base na Figura 19 que representa o
circuito magntico. E atravs dele, desenvolvido o modelo UMEC (Figura 20). O modelo
UMEC constitudo de ns para representar entradas e sadas de fluxos magnticos, a fonte
de fora magnetomotriz N1 I1 representa cada enrolamento individualmente, as tenses dos
enrolamentos so usadas para calcular os fluxos do membro onde se encontra o enrolamento.
As matrizes utilizadas para a modelagem matemtica do reator em questo so mostradas
a partir da Equao 8 que representa a Matriz de Incidncia Nodal, finalizando com a Equao
21 que demonstra correntes nos enrolamentos.
* Matriz [A] obtida atravs dos ns do modelo UMEC, assim:

1 1

A=
1 0

1 1

(8)

* Matriz Permencia [P] diagonal :

P1 0 0 0

0 P2 0 0

P =
0 0 P 0
3

0 0 0 P4

(9)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

Figura 18 Algoritmo do clculo da corrente do UMEC para RNS


Incio
Entradas:
n pontos da curva B H = {(bi , hi )|bi B, hi H, i {1, , n}}
Matriz com quantidade de espiras nos n enrolamento N Nn
Tenso de Entrada em cada enrolamento V Rn
reas dos i ncleos e Aw Ri e reas dos j jugos Ay Rj
Comprimentos dos ncelos Lw Ri e jugos Ly Rj
Indutncia de Disperso Ld R
Clculo da densidade magntica Hi (t), i {1, , n}
dos n enrolamentos do reator.
Algoritmo apresentado na Figura 17

Clculo das permencias nos n ramos principais.


Bi
Ai
Pi = Hi
, i {1, , n}
Li
Clculo dos fluxos magnticos nos ramos principais.
i = Bi Ai , i {1, , n}
Construo de matrizes:
[P ]; [N ]; [A]
Matriz M :
[M ] = [I] [P ][A]([A]T [P ][A])1 [A]T .
Matriz Yss :
[Yss ] = ([Mss ][Ps ][Ns ])1 (dt/2)[Ns ]1 .
Clculo da Corrente I:
Is (t) = [Yss ]Vs (t) + Ins .
Clculo da Corrente Ins :
Ins = ([Mss ][Ps ][Ns ])1 ((dt/2)[Ns ]1 vs (t dt) + s (t dt)).
Fim

Fonte: Prprio Autor

40

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

41

Figura 19 Caminhos de fluxos magnticos no ncleo.

Fonte: Prprio Autor


Figura 20 Circuito equivalente (UMEC)
P3

P4

P2

P1

+
-

Fonte: Prprio Autor


* Matriz diagonal das espiras [N]:
h i
N = N1

(10)

* Matriz das tenses nos enrolamentos:


h i
V = V1

(11)

* Matriz dos fluxos nos enrolamentos:


h i
= 1

(12)

* Matriz identidade [I] =

0
I=
0

0
1
0
0

0
0
1
0

(13)

42

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Matriz relacionada a fonte de corrente de cada enrolamento [Ins ]:


h
i
Ins = Ins1

(14)

* Matriz [M] quadrada :

m11

m21
M =
m
31
m41

m12
m22
m32
m42

m13
m23
m33
m43

m14

m24

m34

m44

(15)

como [M ] = [I] [P ][A]([A]T [P ][A])1 [A]T , temos:

m11
m21
m31
m41

m12
m22
m32
m42

m13
m23
m33
m43

m14
m24

m34
m44

1
0
0
0

0
1
0
0

0
0
1
0

P1
0
0
0
0
0
0
1

0
P2
0
0

0
0
P3
0

1
0
0 0
1
0
1
P4

1
1
T
([A]
0
1

P1
0
0
0

0
P2
0
0

0
0
P3
0

1
0
0 0
1
0
1
P4

(16)

* A submatriz[Mss ] pode ser obtida:


h

Mss = M11

(17)

* Matriz [Pss] relacionada ao enrolamento 1 :


h i
P s = P1

(18)

* A matriz admitncia pode ser entendida como: [Yss ] = ([Mss


][Ps ][Ns ])1 dt2 [Ns ]1 ,

logo:
h i
Yss = Y11

(19)

* Reescrevendo a matriz Ins , temos:


h
i
h
ih ih i
h i1 h i h i
1 t
=
(
)
(
Ins1
M11 P1 N1
N1
V1 + 1 )
2

(20)

* Logo, a corrente no enrolamento 1 :


h i h ih i h
i
I1 = Y11 V1 + Ins1

(21)

1
1
)
0
1

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

43

3.2 Modelo UMEC para reator monofsico naturalmente


saturado com 2 enrolamentos
Figura 21 Caminhos de fluxos magnticos no ncleo.

Fonte: Prprio Autor


Figura 22 Circuito UMEC do reator com dois enrolamentos
P3
+
P4

P1

P2

P5

+
-

Fonte: Prprio Autor


A modelagem deste reator leva em considerao o circuito magntico da Figura 21 e o
modelo UMEC mostrado na Figura 22.
Da mesma forma que foi calculada as matrizes para o reator anterior, aplica-se para o
reator saturado com dois enrolamentos. Iniciando os estudos com a matriz de Incidncia Nodal
na Equao 22 e finalizando com a frmula das correntes para os dois enrolamentos ( Equao
35), temos:
* Matriz [A] obtida atravs dos ns 1 e 2 do modelo UMEC:

1 1

0
1

A=
1 0

1 1
0
1

(22)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

44

* De acordo com o modelo UMEC a Matriz Permencia [P] construda:

P1 0 0 0 0

0 P2 0 0 0

P =
0
0
P
0
0
3

0
0
0
P
0

4
0 0 0 0 P5

(23)

* Matriz diagonal [N] dos dois enrolamentos:


"
#
N1 0
N=
0 N2

(24)

* Matriz das tenses dos enrolamentos:


" #
V1
V =
V2

(25)

* Matriz dos fluxos magnticos dos enrolamentos:


"

1
=
2

#
(26)

* Matriz identidade [I] =

I=
0

0
0

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0

0
1

(27)

* Matriz relacionada a fonte de corrente de cada enrolamento [Ins ]:

Ins

"
#
Ins1
=
Ins2

(28)

45

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Matriz [M] quadrada :

m11

m21

M =
m31

m41
m51

m12
m22
m32
m42
m52

m13
m23
m33
m43
m53

m15

m25

m35

m45
m55

m14
m24
m34
m44
m54

(29)

como [M ] = [I] [P ][A]([A]T [P ][A])1 [A]T , temos:


1
0
M =
0
0
0

0
1
0
0
0

0
0
1
0
0

0
0
0
1
0

P1
0
0
...

0 .
.
0
.
1
0

..
.
..
.

1
1
0 ([A]T

1
1

0
1
..
0
.
1
..
1
.
0
P5

0
0

0
0

0
P2
0
0
0

0
0
P3
0
0

0
0
0
P4
0

0
1
0 0
0 1

0
1
P5
0

1
1
0 )1 [A]T

1
1

(30)

* A submatriz[Mss ] pode ser obtida:


"
Mss =

M11 M12
M21 M22

#
(31)

* Matriz [Pss] relacionada aos enrolamentos 1 e 2 :


"

P1 0
Ps =
0 P2

#
(32)

* A matriz admitncia pode ser entendida como: [Yss ] = ([Mss


][Ps ][Ns ])1 dt2 [Ns ]1 ,

logo:
"

Y11 Y12
Yss =
Y21 Y22

#
(33)

* Reescrevendo a matriz Ins , temos:


"

"
#1 " # " #
#
"
#"
#"
#
Ins1
M11 M12 P1 0
V1
1
N1 0 1 t N1 0
=(
) (
+
)
2
Ins2
M21 M22
0 P2
0 N2
0 N2
V2
2

(34)

* Logo, as correntes nos enrolamentos 1 e 2 do reator so:


" # "
#" # "
#
I1
Y11 Y12 V1
Ins1
=
+
I2
Y21 Y22 V2
Ins2

(35)

46

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

3.3 Modelo UMEC para reator trifsico naturalmente saturado


com 6 enrolamentos e dois retornos
Replicando os conceitos utilizados nas outras modelagens segue os circuito magntico
(Figura 23) e o UMEC do RNS com 6 enrolamentos e 2 retornos.
Figura 23 Caminhos de fluxos magnticos no ncleo.

Fonte: Prprio Autor


Figura 24 Circuito UMEC do reator com 6 enrolamentos.
P15

P16

P17

P1

+
-

P13

P10

+
-

P11

+
-

+
-

P2
P8

P5

P3
P9

P7

P18

P4

P12

+
-

P14

P6

+
-

Fonte: Prprio Autor


As matrizes necessrias para a modelagem do RNS trifsico com 6 enrolamentos so
mostradas a seguir:

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

47

* Matriz [A] obtida atravs dos ns do modelo UMEC, logo:

1 1 0
0
0
0

1
0
0
0
0

0
0
1 1 0
0

0
0
1
0
1

0
0
0
0
1 1

0
0
0
0
1

1 1 0
0
0
0

0 1 0

0
0
0

0
0 1 1
0
0

A=

0
0
1
0
0

0
0
0
0 1 1

0
0
0
0
1

0
0
0
0
0
0

0
0
0
0
0

1 0
0
0
0
0

1 0

1
0
0
0

0
0
1
0 1 0

0
0
0
0 1 0

(36)

* Matriz Permencia [P] diagonal obtida de acordo com o modelo UMEC:

P1 0

0 P2
.
..
.
.
.
0 0

..
.

0
0
..
.

P18

* Matriz diagonal das espiras [N]:

N1 0
0
0
0
0

0 N2 0
0
0
0

0
0
N
0
0
0

3
N =

0
0
0
N
0
0
4

0
0
0
N
0
5

0
0
0
0
0 N6

(37)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

48

* Matriz das tenses nos enrolamentos:



V1

V2

V
3
V =
V4

V
5
V6

(38)

* Matriz dos fluxos nos enrolamentos:



1

2


3
=
4


5
6

(39)

* Matriz identidade [I]:

I18

0
=
..
.

0
..

.
0 0 1
0
1
.. . .
.
.

(40)

* Matriz relacionada a fonte de corrente de cada enrolamento [Ins ]:

Ins

Ins1

Ins2

I
ns3
=

Ins4

I
ns5
Ins6

(41)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

49

* Matriz [M] quadrada dada por:


[M ] = [I] [P ][A]([A]T [P ][A])1 [A]T , logo
* A submatriz[Mss ] pode ser obtida:

m11

m21

m
31
M =
m41

m
51
m61

m12
m22
m32
m42
m52
m62

m13
m23
m33
m43
m53
m63

m14
m24
m34
m44
m54
m64

m15
m25
m35
m45
m55
m65

m16

m26

m36

m46

m56

m66

(42)

* Matriz [Pss] relacionada aos enrolamentos 1 ao 6 :

P1 0 0 0 0 0

0 P2 0 0 0 0

0 0 P 0 0 0

3
Ps =

0 0 0 P4 0 0

0 0 0 0 P 0
5

0 0 0 0 0 P6

(43)

* A matriz admitncia pode ser entendida como: [Yss ] = ([Mss


][Ps ][Ns ])1 dt2 [Ns ]1 ,

logo:

Y11

Y21

Y
31
Yss =
Y41

Y
51
Y61

Y12
Y22
Y32
Y42
Y52
Y62

Y13
Y23
Y33
Y43
Y53
Y63

Y14
Y24
Y34
Y44
Y54
Y64

Y15
Y25
Y35
Y45
Y55
Y65

Y16

Y26

Y36

Y46

Y56

Y66

(44)

50

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Reescrevendo a matriz Ins , temos:

ns1

..
.
..
.

Ins6

P1
0
([Mss ]
...
0

0
P2
..
.
0

..
.

0
N1
0 0
.
..
. ..
P6
0

0
P2
..
.
0

..
.

V1
1
0
..
. ...
0
1
1 t
Ns ] . + . )
[
)
(
..
. .
2
.
.
.
N6
V6
6

(45)

* Consequentemente, as correntes nos 6 enrolamentos so:



I1
Y1,1
. .
.. ..

.= .
.. ..

I6
Y6,1

Y1,6
V1
Ins1
. .
..
..


.
.
.. ..
+

.
... ...
..


Y6,6
V6
Ins6

(46)

3.4 Modelo UMEC para reator trifsico naturalmente saturado


com 9 enrolamentos e dois retornos
O circuito magntico (Figura 25) e o UMEC (Figura 26) do reator trifsico naturalmente
saturado com 9 enrolamentos e 2 retornos. mostrado na figura abaixo:
Figura 25 Caminhos de fluxos magnticos no ncleo.

Fonte: Prprio Autor


As matrizes necessrias para a modelagem do RNS trifsico com nove enrolamentos so
mostradas:

51

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

Figura 26 Cicruito UMEC do reator de 9 enrolamentos.


P22

P21

P1

P7

P4
P16

P13

P10

+
-

P19

P24

P23

+
-

+
-

P2
P14

P11

+
-

P5

P8

P17

+
-

+
-

P6

P3

P9
P18

P15

P12

+
-

+
-

+
-

P20

Fonte: Prprio Autor

* Matriz [A] obtida atravs dos ns do modelo UMEC, logo:

A=

1
0

0
0

0
0

0
0

0
0

0
0

0
0

1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0

0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
1
0
0
0
0
0
0
0
0

0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1
0

0
0
0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0

0
0
0
0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
1
1

0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0

0
0
0

0
0

1
0

0
0

0
1

0
0

0
0

(47)

* Matriz Permencia [P] diagonal obtida de acordo com o modelo UMEC e equivale a

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

52

uma matriz de tamanho 24.

P1 0

0 P2
P =
..
..
.
.
0 0

..
.

0
0
..
.

(48)

P24

* Matriz das tenses nos enrolamentos:



V1

V2

V3


V4

V =
V5

V6

V7


V8
V9

(49)

* Matriz dos fluxos nos enrolamentos:



1

2

3


4

=
5

6

7


8
9

(50)

* Matriz identidade [I] :

I24

0
=
..
.

0
..

.
0 0 1
0
1
.. . .
.
.

(51)

53

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Matriz relacionada a fonte de corrente de cada enrolamento [Ins ]:

Ins

Ins1

Ins2

Ins3

Ins4

=
I
ns5

Ins6

Ins7

I
ns8
Ins9

(52)

* Matriz [M] dada por : [M ] = [I] [P ][A]([A]T [P ][A])1 [A]T , logo:


* A submatriz[Mss ] pode ser obtida:

m11

m21

m31

m41

Mss =
m51

m61

m71

m81
m91

m12
m22
m32
m42
m52
m62
m72
m82
m92

m13
m23
m33
m43
m53
m63
m73
m83
m93

m14
m24
m34
m44
m54
m64
m74
m84
m94

m15
m25
m35
m45
m55
m65
m75
m85
m95

m16
m26
m36
m46
m56
m66
m76
m86
m96

m17
m27
m37
m47
m57
m67
m77
m87
m97

m18
m28
m38
m48
m58
m68
m78
m88
m98

m19

m29

m39

m49

m59

m69

m79

m89
m99

(53)

* Matriz [Pss] relacionada aos enrolamentos 1 ao 9 :

P1 0 0 0 0 0 0 0 0

0 P2 0 0 0 0 0 0 0

0 0 P3 0 0 0 0 0 0

0 0 0 P4 0 0 0 0 0

Ps =
0 0 0 0 P5 0 0 0 0

0 0 0 0 0 P6 0 0 0

0 0 0 0 0 0 P7 0 0

0 0 0 0 0 0 0 P8 0
0 0 0 0 0 0 0 0 P9

(54)

* A matriz admitncia pode ser entendida como: [Yss ] = ([Mss


][Ps ][Ns ])1 dt2 [Ns ]1

54

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Reescrevendo a matriz Ins , temos:


h

i
h
ih ih i
t h i1 h i h i
Nss
V + )
Ins = ( Mss Pss Nss )1 (
2

(55)

* Assim, as correntes nos 9 enrolamentos so:



I1
Y1,1
. .
.. ..

.= .
.. ..

I9
Y9,1

..
.

Y1,9
V1
Ins1
. .
..

. .. ..

. + .
..
. .
.
. .
Y9,9
V9
Ins9

(56)

3.5 Modelo UMEC para reator trifsico com congurao em


monobloco naturalmente saturado com 12 enrolamentos e
dois retornos
Figura 27 Caminhos de fluxos magnticos no ncleo.

Fonte: Prprio Autor


Figura 28 Circuito UMEC do reator em monobloco com 12 enrolamentos.
P27

P28

P1
P13

P17

P16

+
-

P4

+
-

+
-

P22

+
-

P23

+
-

+
-

P8
P20

P11

P9
P21

+
-

P6
P18

P33

P32

P7
P19

+
-

+
-

P2
P14

P31

P5

P3
P15

+
-

P25

P30

P29

P26

P12

P10
P24

+
-

+
-

Fonte: Prprio Autor


O circuito magntico (Figura 27) e o UMEC (Figura 28) do reator trifsico naturalmente
saturado com 12 enrolamentos e 2 retornos so mostrados. As matrizes necessrias para a
modelagem do reator saturado trifsico com configurao monobloco so mostradas a seguir:

55

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Matriz [A] obtida atravs do modelo UMEC, logo:

A=

1
0
0

0
0

0
0

1
0

0
0

0
0

0
0

1
1

0
0
0

1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0

0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0

0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0

0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
1
1
0

0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
1
1
0
0
0
0
0
0
0
0
0
0
0

0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
1
0
0
0
0
0
0
0
0
1
1

0
0

0
0

0
0

0
1

0
0

0
0

0
0

0
0

0
0

0
0

(57)

* Matriz Permencia [P] diagonal obtida de acordo com o modelo UMEC e equivale a
uma matriz de tamanho 33.

P1 0

0 P2
P =
..
..
.
.
0 0

..
.

0
0
..
.

P33

(58)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

56

* Matriz das tenses nos enrolamentos:

V1

V2

V
3

V4

V
5

V6

V =
V
7

V8

V
9

V10

V
11
V12

(59)

* Matriz dos fluxos nos enrolamentos:

1

2


3

4


5

6

=

7

8


9

10


11
12

(60)

* Matriz identidade [I] :

I33

0
=
..
.

0
1
.. . .
.
.

0
..

0 0 1

(61)

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

57

* Matriz relacionada a fonte de corrente de cada enrolamento [Ins ]:

Ins

Ins1

Ins2

I
ns3

Ins4

I
ns5

Ins6

=
I
ns7

Ins8

I
ns9

Ins10

ns11
Ins12

(62)

* Matriz [M] dada por : [M ] = [I] [P ][A]([A]T [P ][A])1 [A]T , logo:


* A submatriz[Mss ] pode ser obtida:

m1,1
.
..

Mss = .
..

m12,1

m1,12
..
.

..

m12,12

..
.

(63)

58

Captulo 3. Modelagem de Reatores naturalmente saturados utilizando o UMEC no ATP

* Matriz [Pss] relacionada aos enrolamentos 1 ao 12 :

P1 0 0 0 0 0 0 0 0
0
0
0

0 P2 0 0 0 0 0 0 0

0
0
0

0 0 P 0 0 0 0 0 0
0
0
0

0 0 0 P4 0 0 0 0 0

0
0
0

0 0 0 0 P 0 0 0 0
0
0
0

0 0 0 0 0 P6 0 0 0

0
0
0

Ps =
0 0 0 0 0 0 P 0 0
0
0
0
7

0 0 0 0 0 0 0 P8 0

0
0
0

0 0 0 0 0 0 0 0 P
0
0
0
9

0 0 0 0 0 0 0 0 0 P10 0

0 0 0 0 0 0 0 0 0
0 P11 0

0 0 0 0 0 0 0 0 0
0
0 P12

(64)

* A matriz admitncia pode ser entendida como: [Yss ] = ([Mss


][Ps ][Ns ])1 dt2 [Ns ]1

* Reescrevendo a matriz Ins , temos:


h

i
h
ih ih i
t h i1 h i h i
Ins = ( Mss Pss Nss )1 (
Nss
V + )
2

(65)

* Logo, as correntes nos 12 enrolamentos definida como:


I1
Y1,1
. .
.. ..

. = .
.. ..

I12
Y12,1

Y1,12
Ins1
V1
. .
..

.
.. ..
. + .
..
. .

.
. .
Y12,12
Ins12
V12

..
.

(66)

59

4 Biblioteca RLib
Este captulo apresenta uma descrio da biblioteca desenvolvida para avaliao de
reatores naturalmente saturados utilizando a linguagem Models do ATP (RLib). A ideia de
se utilizar uma biblioteca para reatores naturalmente saturados veio da necessidade de ter um
componente unificado que permitisse a implementao de diferentes reatores naturalmente
saturados sem a necessidade de se recriar todo o cdigo para cada componente. Dessa forma,
cientistas e engenheiros podem simular o comportamento de RNSs com diferentes configuraes
de uma maneira mais simples que copiar o cdigo de reatores previamente implementados e
adicionar novas funcionalidades. Esse tipo de implementao mais suscetvel a erros.
Com a utilizao do componente proposto, o trabalho de elaborao de um modelo de
simulao facilitado e o tempo de desenvolvimento do projeto do reator diminudo de forma
significativa. Este captulo divido em trs sees principais listadas a seguir: (i) arquitetura do
biblioteca RLib; (ii) comportamento da biblioteca RLib; (iii) integrao com modelos de reatores
naturalmente saturados. importante destacar que nesse captulo alm de uma viso geral de
como o comportamento e estrutura da biblioteca RLib, sero mostrados tambm detalhes de
implementao de como utilizar a biblioteca. Dessa forma, analistas de RNSs podero criar
modelos de reatores utilizando os exemplos aqui mostrados como base.

4.1 Consideraes Importantes Sobre a Linguagem Models


Esta seo apresenta algumas consideraes que devem ser mencionadas para deixar mais
clara a forma como alguns componentes da linguagem Model foram utilizados. Por exemplo, na
linguagens modelos a representao de matrizes retangulares no claramente definida. Portanto,
solues alternativas tiveram que ser implementadas para que esse tipo de comportamento fosse
codificado. Os dois principais elementos destacados nesse captulo se referem a utilizao de
subrotinas e implementao de matrizes retangulares.
4.1.1

Implementao de subrotinas.

A linguagem models apesar de poderosa, difere de linguagens de programao


convencionais como C, Java ou Python. Uma vez que tem o foco na representao e interligao
de componentes eltricos, a linguagem no possui alguns elementos que facilitam a representao
de tipos de dados de alto nvel como classes, estrutura de dados ou subrotinas. Ao invs disso,
a linguagem permite a criao de submodelos hierrquicos que simulam o comportamento de
subrotinas. Mais especificamente, a linguagem models permite as seguintes formas de se escrever
subrotinas ou procedimentos (DUB, 1996):

Captulo 4. Biblioteca RLib

60

Funo declarativas. Uma funo declarativa possui as mesmas caracterticas de uma


expresso. Para um certo conjunto de argumentos, uma funo da linguagem Models
calcula a expresso e retorna um resultado. Contudo, toda expresso deve ser atmica
e variveis intermedirias no podem ser criadas. Dessa forma, funes da linguagem
Models diferem de funes em linguagens de mais alto nvel, como C++ por exemplo,
dado que expresses no podem ser encadeadas. Na linguagem models, uma expresso
por funo admitida.
O trecho de cdigo 4.1 apresenta a forma como funes so definidas na linguagem
Models. A palavra chave FUNCTION inicia a funo. Em seguida, o nome da funo
declarativa deve ser declarada, sua lista de argumentos (argname1, argname2, ...) e por fim
uma expresso (expression) que calcula e retorna um resultado baseado nos parmetros
informados.
1

FUNCTION somename(argname1, argname2, ... ) := expression

Cdigo Fonte 4.1 Template para criao de funes declarativas.


Um exemplo da utilizao de uma funo declarativa pode ser vista no Cdigo Fonte 4.2.
Nesse caso, trs variveis so somadas e o resultado retornado. Observe que apenas
um expresso pode ser utilizada para o clculo do resultado. Portanto, algoritmos mais
complexos que requerem a utilizao de uma ou mais variveis no podem ser criados
apenas utilizando-se funes declarativas.
1
2
3
4
5

-- Calcula a soma de param1 + param2 + param3


FUNCTION simple_sum(param1, param2, param3) := a+b+c
...
-- result guarda o valor 6.
result := simple_sum(1, 2, 3)

Cdigo Fonte 4.2 Exemplo de utilizao de funes declarativas


Funo externa. Uma funo externa corresponde a uma rotina escrita em outra linguagem
de programao e adicionada a linguagem models no processo de montagem do cdigo
fonte (linking process). Apesar de apresentar uma soluo vivel para construir subrotinas
complexas, o cdigo fonte do ATP precisa ser recompilado juntamente com o cdigo da
rotina externa para que essa possa ser utilizada o que torna o processo como um todo
bastante trabalhoso. Para detalhes de como utilizar funes externas o leitor direcionado
a referncia (DUB, 1996)
Submodelos da Models. Submodelos da linguagem Models, ou simplesmente modelos,
so componentes da linguagem que permitem guardar valores e executar procedimentos.
Portanto, modelos intermedirios so utilizados para representar o comportamento de procedimentos na linguagem. Ao invs de criarmos um procedimento e utilizarmos este para

Captulo 4. Biblioteca RLib

61

a execuo de uma subrotina, um submodelo criado e este usado para representar/executar a funcionalidade desejada. Existem duas formas de se utilizar um submodelo dentro
de outro modelo: (i) utilizando um modelo localmente definido, ou (ii) empregando-se um
modelo externo. No modelo localmente definido, a sua descrio feita dentro do modelo
que o chama. Por outro lado, o modelo externo declarado fora do mdulo que o utiliza.
O Cdigo Fonte 4.3 apresenta a forma como um submodelo criado e utilizado. Observe
que um modelo de mais alto nvel criado na linha 1 (modelo_principal) e dentro deste
um submodelo criado (sub_modelo). A forma de utilizao do submodelo pelo modelo
principal mostrada na linha 17.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23

MODEL modelo_principal
-- O modelo de alto nvel definido da forma habitual
CONST ...
DATA ...
INPUT ...
VAR ...
OUTPUT ...
MODEL sub_modelo
-- O modelo intermedirio criado e utilizado no modelo principal
CONST ...
DATA ...
...
ENDMODEL
...
EXEC
...
USE sub_modelo AS submod_1
-- Forma de utilizao do submodelo
...
ENDUSE
...
ENDEXEC
ENDMODEL

Cdigo Fonte 4.3 Exemplo de utilizao de submodelos localmente definidos


A outra forma de utilizao de um submodelo corresponde a um modelo externo. Nesse
caso, ao invs de se definir o submodelo dentro do modelo que o utiliza, o modelo externo definido fora do modelo chamador utilizando-se a palavra chave EXTERNAL. O
Cdigo Fonte 4.4 apresenta a forma de utilizao de um modelo externo na linguagem
models. Nesse exemplo o modelo_utilizador (linhas 1 a 5) executa o modelo_utilizado
(linhas 16). Para que o modelo_utilizador reconhea o modelo_utilizado como um submodelo necessrio que isso seja definido com o uso da palavra chave EXTERNAL na linha 12.
1
2
3
4
5
6

MODEL modelo_utilizado
CONST ...
DATA ...
...
ENDMODEL

62

Captulo 4. Biblioteca RLib

7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

MODEL modelo_utilizador
-- Esse modelo vai utilizar o modelo_utilizado
CONST ...
DATA ...
...
MODEL modelo_utilizado EXTERNAL
...
EXEC
...
USE modelo_utilizado AS mod1
-- O modelo_utilizado est sendo usado nesse ponto.
...
ENDUSE
...
ENDEXEC
ENDMODEL

Cdigo Fonte 4.4 Forma de utilizao de modelos externos.


A biblioteca RLib utiliza submodelos internos e externos para declarao de procedimentos
e subrotinas fazendo com que a soluo proposta seja totalmente compatvel com a
linguagem model da ATP e no dependente de nenhuma outra linguagem de programao
como no caso da utilizao de funes externas.
4.1.2

Representao de matrizes retangulares.

Lingaugens de programao de alto nvel como C++, Java ou Python apresentam suporte
nativo para representao e manipulao de matrizes retangulares. Por exemplo, na linguagem
java, a expresso
1

int matrix[][] = new int[20][20];

cria uma matriz de inteiros chamada matrix com 20 linhas e 20 colunas. Contudo,
na linguagem models apenas matrizes de uma dimenso (matrizes do tipo linha) so
suportados (DUB, 1996). Assim, uma soluo alternativa proposta para contornar essa
restrio da linguagem e ainda assim representar matrizes com mais de uma dimenso. Nesse
caso, para representa uma matrix Anm utilizamos um vetor de B de dimenso p = n m.
Para tal, cada elemento de ai,j A mapeado em um elemento b Bp . Esse mapeamento
representado a seguir:
b(i1)m+j Rp = ai,j Rnm
Esse mapeamento representa as n linhas da matriz A de forma justaposta no vetor B.
Considere esse exemplo para demonstrar como uma matriz retangular Cnm , definida a seguir,
pode ser mapeada em um vetor D com dimenso p = n m.

63

Captulo 4. Biblioteca RLib

c1,1 c1,2

c2,1 c2,2
C=
..
..
.
.
cn,1 cn,2

c1,m

c2,m
..
...
.
.
cn,m

Utilizando-se o mapeamento definido acima podemos representar o vetor D na forma a


seguir.

D = (d1 , d2 , , dnm ) = (c1,1 , , c1,m , c2,1 , , c2,m , , cn,1 , , cn,m )


Portanto, sempre que quisermos representar uma matriz retangular de n linhas e m
colunas na linguagem models, utilizaremos um vetor com tamanho n m e acessaremos o
elemento da linha n e coluna m da forma apresentada no Cdigo Fonte 4.5. Na linha 2, um vetor
(chamado matrix) de tamanho 200 (10 20), o nmero de linhas da matriz (linhas) e o nmero
de colunas (colunas) so representados. Em seguida essas variveis so inicializadas na linha
6. Nas linhas 11 e 14, os elementos das posies (5, 4) e (6, 9) da matriz so atualizadas com
valores 12 e 13 respectivamente. Por fim, o elemento da posio (9, 10) recebe a soma das dos
dois elementos mancionados anteriormente.
1 MODEL matrixRepresentation
2
VAR matrix[1..200], linhas, colunas
3
INIT
4
-- Cria uma matrix de 20 linhas e 10 colunas e inicializa todos os
5
-- elementos com valor 0
6
linhas := 20, colunas:= 10, matrix[1..200]:=0
7
ENDINIT
8
EXEC
9
10
-- Guarda o valor 12 no elemento da linha 5 e coluna 4 (matrix[5][4] = 12).
11
matrix[(5 - 1)*colunas + 4] = 12
12
13
-- Guarda o valor 13 no elemento da linha 6 e coluna 9 (matrix[6][9] = 13).
14
matrix[(6 - 1)*colunas + 9] = 13
15
16
-- Soma o elemento da posio (5, 4) com o element (6, 9) e guarda no elemento (9, 10)
17
matrix[(9 - 1)*colunas + 10] = matrix[(5 - 1)*colunas + 4] + matrix[(6 - 1)*colunas + 9]
18
19
-- O elemento (9, 10) da matrix contem o valor 25
20
ENDEXEC
21 ENDMODEL

Cdigo Fonte 4.5 Forma alternativa de representao de matrizes retangulares na linguagem


models

Captulo 4. Biblioteca RLib

64

4.2 Viso Geral da Arquitetura da Biblioteca RLib


O diagrama de classes (LOBO, ) que representa a biblioteca RLib mostrada na
Figura 29. Na Figura so listados sete mdulos auxiliares (RLibAux) e um mdulo principal
(RNSMatrix). Esses oito mdulos juntos formam a biblioteca RLib. Na linguagem Models,
um mdulo tambm chamado de modelo. Portanto, nesse documento utilizaremos ambas as
expresses (mdulo e modelo) para designar uma entidade do sistema que possui um conjunto
de atributos e operaes. Nesta seo, inicialmente ser apresentada a biblioteca RLibAux que
composta por modelos criados para realizar operaes sobre matrizes (Seo 4.2.1). Em seguida
o comportamento da biblioteca RLib propriamente dita descrita (Seo 4.2.2).
4.2.1

Pacote para operaes sobre matrizes - RLibAux

Os modelos da biblioteca RLibAux (Figure 29) so mostrados a seguir:


1. sumMatrices. Este mdulo responsvel por realizar a soma de matrizes (Cdigo Fonte
4.6). O mdulo recebe duas matrizes (e.g., mmA e mmB) como parmetro e retorna uma
nova matriz correspondente a soma das entradas (mmOut = mmA + mmB). Observe
que a forma de representao das duas matrizes est de acordo com o que foi apresentado
na Seo 4.1.2. Dois loops encadeados do tipo FOR (linhas 17 e 18) so criados para
varrer os elementos das matrizes mmA e mmB e armazenar a respetiva soma na matriz
mmC. Observe que na linha 19 os elementos da mmA e mmB so somados e o resultado
guardado na matrix mmOut.
Para o modelo apresentado, o nmero mximo de elementos em cada matriz de entrada e
na matriz de sada 900 (linhas 2, 3 e 6). Contudo, possvel aumentar essa capacidade
alterando-se o tamanho das matrizes de entrada e sada. importante salientar que quanto
maior a capacidade de representao de cada matriz maior ser a quantidade de memria
consumida pela biblioteca.
1 MODEL sumMatrices
2
INPUT linesA, columnsA, mmA[1..900]
3
linesB, columnsB, mmB[1..900]
4
VAR i, j, c, mmOut[1..900], linesOut, columnsOut
5
OUTPUT
6
mmOut[1..900], linesOut, columnsOut
7
INIT
8
i := 0, j:= 0, c:= 0, mmOut[1..900]:=0
9
ENDINIT
10
EXEC
11
12
linesOut := linesA, columnsOut := columnsA
13
14
------------------------------------------------------------15
-- SUM THE MATRICES
16
-------------------------------------------------------------

Captulo 4. Biblioteca RLib

65

17
FOR i:=1 TO linesA DO
18
FOR j:=1 TO columnsA DO
19
mmOut[(i-1)*columnsA + j] := mmA[(i-1)*columnsA + j]+mmB[(i-1)*columnsB + j]
20
ENDFOR
21
ENDFOR
22
ENDEXEC
23 ENDMODEL

Cdigo Fonte 4.6 Mdulo da biblioteca RLib para soma de matrizes


2. subtractMatrices. Anlogo ao sumMatrices, a diferena como o prprio nome indica
que ao invs de somarmos duas matrizes, este modelo subtrai duas matrizes de entrada
mmA e mmB e retorna como resultado a matriz mmOut = mmA mmB. A estrutura
do mdulo apresentada no Cdigo Fonte 4.7. Observe que a subtrao das matrizes
efetivamente realizada na linha 19, na qual para cada linha e coluna da matriz de sada o
elemento resultante vem da operao mmA mmB da linha e coluna correspondente.
1 MODEL subtractMatrices
2
INPUT linesA, columnsA, mmA[1..900]
3
linesB, columnsB, mmB[1..900]
4
VAR i, j, c, mmOut[1..900], linesOut, columnsOut
5
OUTPUT
6
mmOut[1..900], linesOut, columnsOut
7
INIT
8
i := 0, j:= 0, c:= 0, mmOut[1..900]:=0
9
ENDINIT
10
EXEC
11
12
linesOut := linesA, columnsOut := columnsA
13
14
------------------------------------------------------------15
-- SUBTRAC THE MATRICES
16
------------------------------------------------------------17
FOR i:=1 TO linesA DO
18
FOR j:=1 TO columnsA DO
19
mmOut[(i-1)*columnsA + j] := mmA[(i-1)*columnsA + j]-mmB[(i-1)*columnsB + j]
20
ENDFOR
21
ENDFOR
22
ENDEXEC
23 ENDMODEL

Cdigo Fonte 4.7 Mdulo da biblioteca RLib para subtrao de matrizes


3. transposeMatrices. Nesse mdulo (Cdigo Fonte 4.8), uma matriz de entrada mmA
passada como parmetro (linha 2) e a sada (linha 5) corresponde a matriz transposta
da entrada (mmOut = mmAT ). O nmero de linhas da matriz de sada corresponde
ao nmero de colunas da matriz de entrada e o nmero de colunas da matriz de sada
recebe o nmero de linhas da matriz de entrada (linhas 11 e 12). Dois loops do tipo FOR
so criados para varrer as linhas e colunas da matriz de entrada (linhas 17 e 18) e cada
elemento da linha i e coluna j da matriz de entrada copiado para o elemento da linha i e

66

Captulo 4. Biblioteca RLib

coluna j da matriz de sada (linha 19).


1 MODEL transposeMatrix
2
INPUT linesA, columnsA, mmA[1..900]
3
VAR i, j, mmOut[1..900], linesOut, columnsOut
4
OUTPUT
5
mmOut[1..900], linesOut, columnsOut
6
INIT
7
i := 0, j:= 0, mmOut[1..900]:=0
8
ENDINIT
9
EXEC
10
11
linesOut := columnsA
12
columnsOut := linesA
13
14
------------------------------------------------------------15
-- TRANSPOSE THE MATRIX
16
------------------------------------------------------------17
FOR i:=1 TO linesA DO
18
FOR j:=1 TO columnsA DO
19
mmOut[(j-1)*columnsOut + i] := mmA[(i-1)*columnsA + j]
20
ENDFOR
21
ENDFOR
22 ENDEXEC
23 ENDMODEL

Cdigo Fonte 4.8 Mdulo da biblioteca RLib para transposio de atrizes


4. changeMatrizSize. Este modelo realiza a criao de uma submatriz a partir de uma matriz
de entrada. Dada uma matriz Anm e dois nmeros inteiros k n e j m. Chamamos
a submatriz Bkj de Anm , uma matriz formada por elementos k linhas e j colunas de
A (situadas nas posies correspondentes em A) (LIMA, 2014). No caso especfico da
biblioteca RLib, apenas as ltimas t = n k linhas e u = m j colunas so removidas
da matriz original A.
Considere o exemplo a seguir. Seja a matriz C44 dada por

1 2 7 0

4 5 9 1

C=
3 5 10 1 .

10 3 6 4
A matrix D de dimenso 2 2 uma submatriz de C dada por
"

#
1 2
D=
.
4 5
importante salientar que como a representao de matrizes retangulares feita de forma
indireta por meio de um vetor (Seo 4.1.2), a simples mudana das variveis que representam os nmeros de linhas e colunas da matriz original no suficiente para realizar tal

Captulo 4. Biblioteca RLib

67

operao. Nesse caso, necessrio que se transporte cada elemento da matriz de origem
para a nova matriz reduzida. O Cdigo Fonte 4.9 apresenta o modelo que obtem uma submatriz (mmOutlinesOutcolumnsOut ) a partir de uma matriz de entrada mmAlinesAcolumnsA .
Na linha 2, so passados os parmetros de entrada do modelo linhas e colunas da matriz
original mmA e quantidade de linhas e colunas da matriz de sada mmOut. Nas linhas
12 e 13, a quantidade linhas e colunas da matriz de sada atualizada e nas linhas 18 e
19 dois loops do tipo FOR so criados para varrer as linhas e colunas da matriz de sada.
A cpia dos valores da matriz de entrada para a matriz de sada realizada na linha 20.
Observe, que cada elemento da mmA copiado para matriz mmOut s nas linhas e colunas
da matriz de sada.
1 MODEL changeMatrixSize
2
INPUT linesA, columnsA, mmA[1..900],
3
newLines, newColumns
4
VAR i, j, mmOut[1..900], linesOut, columnsOut
5
OUTPUT
6
mmOut[1..900], linesOut, columnsOut
7
INIT
8
i := 0, j:= 0, mmOut[1..900]:=0
9
ENDINIT
10
EXEC
11
12
linesOut := newLines
13
columnsOut := newColumns
14
15
------------------------------------------------------------16
-- CHANGE MATRIX SIZE
17
------------------------------------------------------------18
FOR i:=1 TO newLines DO
19
FOR j:=1 TO newColumns DO
20
mmOut[(i-1)*columnsOut + j] := mmA[(i-1)*columnsA + j]
21
ENDFOR
22
ENDFOR
23 ENDEXEC
24 ENDMODEL

Cdigo Fonte 4.9 Mdulo da biblioteca RLib para modificar as dimenses de uma matriz
5. multiplyMatrixScalar. Este mdulo (Cdigo Fonte 4.10) realiza a multiplicao de uma
matriz de entrada mmA por um escalar scalar (linhas 2 e 3) e retorna uma matriz de sada
mmOut = mmA.scalar. Como nos mdulos apresentados anteriormente, dois loops do
tipo FOR (linhas 18 e 19) para varrer as linhas e colunas da matriz de sada e guardar o
resultado da multiplicao de cada elemento da matriz de entrada pelo valor escalar (linha
20).
1 MODEL multiplyMatrixScalar
2
INPUT linesA, columnsA, mmA[1..900],
3
scalar
4
VAR i, j, mmOut[1..900], linesOut, columnsOut

Captulo 4. Biblioteca RLib

68

5
OUTPUT
6
mmOut[1..900], linesOut, columnsOut
7
INIT
8
i := 0, j:= 0, mmOut[1..900]:=0
9
ENDINIT
10
EXEC
11
12
linesOut := linesA
13
columnsOut := columnsA
14
15
------------------------------------------------------------16
-- MULTIPLY THE MATRICES
17
------------------------------------------------------------18
FOR i:=1 TO linesA DO
19
FOR j:=1 TO columnsA DO
20
mmOut[(i-1)*columnsOut + j] := mmA[(i-1)*columnsA + j]*scalar
21
ENDFOR
22
ENDFOR
23 ENDEXEC
24 ENDMODEL

Cdigo Fonte 4.10 Mdulo da biblioteca RLib para multiplicao de uma matriz por
escalar
6. multiplyMatrices. O mdulo que realiza multiplicao de matrizes aprensetado no Cdigo Fonte 4.11. Este mdulo recebe duas matrizes como entrada mmA e mmB (linhas
2 e 3) e retorna como resultado o produto das duas matrizes mmOut = mmA mmB.
O matriz de sada possui o nmero de linhas da matriz mmA e o nmero de colunas da
matriz mmB (linhas 12 e 13). Dois loops do tipo FOR so criados para varrer as linhas e
colunas da matriz de sada (linhas 18 e 19). Cada entrada da matriz de sada corresponde
ao produto interno da respectiva linha da matriz mmA pela coluna da matriz mmB (linhas
21, 22 e 23).
1 MODEL multiplyMatrices
2
INPUT linesA, columnsA, mmA[1..900]
3
linesB, columnsB, mmB[1..900]
4
VAR i, j, c, k, mmOut[1..900], linesOut, columnsOut
5
OUTPUT
6
mmOut[1..900], linesOut, columnsOut
7
INIT
8
i := 0, j:= 0, c:= 0, k:=0, mmOut[1..900]:=0
9
ENDINIT
10
EXEC
11
12
linesOut := linesA
13
columnsOut := columnsB
14
15
------------------------------------------------------------16
-- MULTIPLY THE MATRICES
17
------------------------------------------------------------18
FOR i:=1 TO linesA DO
19
FOR j:=1 TO columnsB DO
20
c := 0
21
FOR k:=1 TO linesB DO

69

Captulo 4. Biblioteca RLib

22
c := c + mmA[(i-1)*columnsA + k]*mmB[(k-1)*columnsB + j]
23
ENDFOR
24
mmOut[(i-1)*columnsB + j] := c
25
ENDFOR
26
ENDFOR
27
ENDEXEC
28 ENDMODEL

Cdigo Fonte 4.11 Mdulo da biblioteca RLib para multiplicar duas matrizes
7. invertMatrix. O Cdigo Fonte A.1 apresenta o mdulo que realiza inverso de matrizes
e clculo de determinantes. Uma forma bastante difundida para o clculo da inversa
de matrizes corresponde a tcnica baseada na matriz adjunta (transposta da matriz de
cofatores) (STRANG, 2003). Apesar de ser facilmente codificada, a implementao
padro do algoritmo requer a utilizao de procedimentos recursivos para o clculo do
determinante das matrizes dos cofatores (PRESS, 2007). Como a linguagem Models no
oferece suporte a recursividade, um algoritmo iterativo da (decomposio LU) foi utilizado
para clculo da inversa de uma matriz.
Sendo assim, utilizamos o mtodo da decomposio LU para representar a matriz de
entrada A como o produto de duas matrizes triangulares L (inferior) e U (superior) (PRESS,
2007). O mtodo da decomposio LU foi inicialmente proposto pelo matemtico ingls
Allan Turing em 1948 (TURING, 1948). Alm das matrizes L e U , foi utilizada uma
matriz de permutao P que utilizada para diminuir os erros de arredondamento nos
clculos utilizados (TREFETHEN; BAU, 1997). A matrix P possui as mesmas dimenses
da matriz a ser invertida e cada linha possui apenas um zero. Tal matriz serve para trocar
a ordem das linhas da matriz de entrada de forma que linhas que apresentem nmeros
com valores absolutos maiores apaream nas primeiras posies. Dada uma matriz de
entrada A a ser invertida. O primeiro passo do algoritmo consiste em criar uma matriz de
pivotamento que troque a ordem das linhas da matriz de entrada conforme descrito acima
(linhas 36 a 60 do Cdigo Fonte A.1).
Em seguida, a matriz de pivotamento P multiplicada pela matriz de entrada A (linhas
65 a 72). O prximo passo consiste em avaliarmos as matrizes L e U que representem a
matriz P A (linhas 98 a 119).
P A = LU
O mtodo Crout (STRANG, 2003; PRESS, 2007) para decomposio LU foi adotado e
apresentado a seguir. Dadas uma matriz B = LU onde L corresponde a uma matriz
triangular inferior e U uma matriz triangular superior representadas a seguir.

70

Captulo 4. Biblioteca RLib

b1,1 b1,2

b2,1 b2,2
.
..
.
.
.
bn,1 bn,2


b1,n
1
0

b2,n l2,1 1

..
..
...
= ..
. .
.
bn,n
ln,1 ln,2

0 u1,1 u1,2

0 0 u2,2

..
..
..
. .
.
0
0
1

...

u1,n

u2,n
..
..

.
.
un,n

Os elementos das matrizes U e L so dados pelas Equaes 1 e 2.

ui,j = bi,j

i1
X

uk,j li,k ,

ij

(1)

k=1
j1

li,j

X
1
(bi,j
uk,j li,k ),
=
uj,j
k=1

i>j

(2)

A partir desse ponto, pode-se utilizar a seguinte estratgia para se calcular a matriz inversa
de A. Sabe-se que
AA1 = I
onde I a matriz identidade. Portanto, a seguinte expresso tambm verdadeira.
P AA1 = P I = P
dado que P A = LU , ento
LU A1 = P
Seja U A1 = Z, ento LZ = P . Dado que P e L so conhecidos, a matriz Z pode ser
encontrada facilmente utilizando-se a tcnica de substituio direta (STRANG, 2003).
Uma vez que a matriz Z seja conhecida, pode-se calcular a matriz A1 (referenciada como
matriz X no cdigo fonte) pela tcnica de substituio reversa (STRANG, 2003). Estes
passos so codificados nas linhas 132 a 143 e nas linhas 148 a 159.
4.2.2

Comportamento da Biblioteca RLIB

A implementao da biblioteca RLib est contida no Cdigo Fonte A.2. Os mdulos


para operaes com matrizes (Pacote RLibAux) esto localizados dentro do mesmo arquivo
da biblioteca RLib e esto definidos entre as linhas 34 e 361 como submodelos localmente
definidos (Seo 4.1.1). O algoritmo para determinao dos elementos do modelos UMEC so
apresentados na Seo 2.3.1. As entradas da biblioteca RLib so (linhas 2 a 9):

Captulo 4. Biblioteca RLib

71

Passo de Simulao - deltaTime - t Passo discreto do processo de simulao (definido


no arquivo ATP).
Matriz de Incidncia Nodal - MatrixA. Corresponde a uma matriz de conexo de ns e
ramos do circuito magntico.
Matriz de Permencias - MP. A matriz de permncias corresponde a uma matrix diagonal
com as permencias de todos os ramos do modelo UMEC.
Matriz de Nmero de Espiras em Cada Enrolamento - MatrixN. Matriz diagonal com
o nmero de espiras de cada enrolamento do reator.
Matriz de Tenses nos Enrolamentos - MatrixV. Matriz coluna com as tenses em cada
um dos enrolamentos do reator.
Matriz de Fluxo Magntico nos Enrolamentos - MatrixO. Matriz coluna com o fluxo
magntico para cada enrolamento do reator.
Matriz das Correntes da Fonte de Tenso Equivalente de entrada - MatrixInsIn.
Matriz coluna com as correntes da fonte de tenso equivalente para cada enrolamento no
tempo t t.
As sadas da biblioteca RLib so apresentadas a seguir (linhas 31 e 32 do Cdigo
Fonte A.2):
Matriz das Correntes da Fonte de Tenso Equivalente de sada - MatrixIns. Matriz
coluna com as correntes da fonte de tenso equivalente para cada enrolamento no tempo
corrent t.
Matriz das Correntes de Sada - MatrixIs. Matriz coluna com a corrente de sada em
cada enrolamento.
A Figura 30 mostra o diagrama de sequncia (LOBO, ) do funcionamento das chamadas
da biblioteca RLib e como as entidades da bibliteca so utilizadas. Na explicao que segue,
utilzaremos a figura para explicar a dinmica de eventos do Cdigo Fonte A.2.
Inicializao. No incio da execuo do mdulo, as dimenses da matriz de permencia
(MP) so utilizadas para para criar uma matriz identidade de mesmo tamanho (linhas 373
at 379 - Cdigo Fonte A.2). Esse passo no mostrado na Figura 30.
Passo 1. A matrix de permencias multiplicada pela matriz de incidncia nodal utilizando
o modelo multiplyMatrices (linhas 389 at 401). Observe na Figura 30 que o Modelo RLib
utiliza o modelo multiplyMatices passando os respectivos argumentos. O retorno dessa
operao (P A) passado para o mdulo principal da biblioteca RLib.

Captulo 4. Biblioteca RLib

72

Passo 2. Nesse passo, a matriz de incidncia nodal transposta por meio do modelo
transposeMatrix. Essa operao realizada nas linhas 403 a 412 do Cdigo Fonte A.2.
Aps isso, a matriz A transposta (AT ) retornada para o mdulo principal.
Passo 3. A matriz de incidncia nodal transposta (AT ) multiplicada pela matriz P A
utilizando o modelo multiplyMatrices (linhas 414 a 426 do Cdigo Fonte A.2). O retorno
dessa operao AT (P A) passado para o mdulo principal (RLib).
Passo 4. A matriz AT (P A) invertida utilizando o modelo invertMatrix e o resultado
T = (AT (P A))1 retornado para o mdulo principal (linhas 428 at 437).
Passo 5. Caso a matriz T avaliada no Passo 4 seja inversvel, o modelo multiplyMatrix
utilizado para encontrar o produto das matrizes P A e T . O resultado dessa operao
Q1 = (P A) T retornado para o mdulo principal. Este passo executado nas linhas
441 at 453 do Cdigo Fonte A.2.
Passo 6. Nesse ponto, a matriz Q2 = Q1 AT avaliada por meio do modelo
multiplyMatrices (linhas 455 at 467).
Passo 7. A matriz identidade I criada na Inicializao passada junto com Q2 para o
mdulo subtractMatrizes. O retorno dessa operao matriz Q = I Q2 calculada nas
linhas 469 at 481.
Passo 8. Uma submatriz de Q calculada (atravs do mdulo changeMatrizSize) para que
se obtenha uma matriz quadrada Qn com nmero de linhas e colunas dada pelo nmero de
ncleos do reator (linhas 483 at 494).
Passo 9. Similarmente ao que foi feito com a matriz Qn , uma nova matriz Pn encontrada
pela mudana das dimenses da matriz de permencias. O mdulo changeMatrixSize
utilizado e o nmero de linhas e colunas da matriz Pn corresponde ao nmero de ncleos
do reator (linhas 496 at 507).
Passo 10. Nesse passo, a inversa da matriz do nmero de espiras em cada enrolamento
(MatrixN) encontrada pelo mdulo invertMatrix N1 = MatrixN1 . Essa operao
efetuada nas linhas 509 at 518 do Cdigo Fonte A.2.
Passo 11. Caso MatrixN seja inversvel, o modelo multiplyMatrixScalar utilizado para
multplicar a matriz N 1 pela metade do intervalo definido na simulao do ATP t . O
resultado B = N1 .t /2 retornado para o mdulo principal. Esse passo executado nas
linhas 524 at 534.
Passo 12. Nesse passo, as matrizes Qn e Pn so multiplicados utilizando-se o mdulo
multiplyMatices. O resultado Qn Pn retornado para o mdulo principal. As linhas 536
at 548 do Cdigo Fonte A.2 implementam essa multiplicao.

Captulo 4. Biblioteca RLib

73

Passo 13. A matriz Qn Pn multiplicada a matriz do nmero de espiras em cada


enrolamento (M atrixN ou simplesmente N ). O resultado QPN = (Qn Pn ) N
retornado para a mdulo principal (linhas 550 at 562).
Passo 14. A matriz QP N invertida pelo mdulo invertMatrices (linhas 564 at 573) e o
resultado QPN1 retornado para o mdulo principal.
Passo 15. Se a matriz QPN admitir inversa, a matriz QPN1 multiplicada multiplicada
a matriz B (Passo 11) e o resultado Yss = QPN1 B retornado ao mdulo principal
(linhas 577 at 589).
Passo 16. O mdulo multiplyMatrices utilizado para multiplicar as matrizes B e V
(linhas 591 at 603). O resultado da operao BV = B V retornado para o mdulo
RLib.
Passo 17. As matrizes BV e O so somadas pelo modelo sumMatrices. O resultado
BVO = BV + O retornado para o mdulo principal. As linhas 605 at 617 do Cdigo
Fonte A.2.
Passo 18. Nesse passo, a matriz In s calculada pela multiplicao de QP N 1 por BV O.
importante que o resultado Ins = QPN1 BVO uma das sadas da biblioteca RLib.
O Cdigo Fonte A.2 apresenta esse clculo nas linhas 619 at 631.
Passo 19. A matriz Yss multiplicada por V e o resulado YV = Yss V retornado para
o mdulo principal. O trecho das linhas 633 at 645 do Cdigo Fonte A.2 implementa essa
multiplicao de matrizes.
Passo 20. Nesse passo, a segunda e ltima sada do algoritmo RLib calculado pela soma
da matriz Y V e Ins . O clculo da matriz Is = YV + Ins ((t 1)) realizado nas linhas
647 at 659 do Cdigo Fonte A.2 (a partir da linha 172).

4.2.3

Integrao de Modelos de RNS com a Biblioteca RLIB

A integrao entre modelos do RNS e a biblioteca RLIB apresentada na Figura 31.


Para utilizao da biblioteca necessrio que se prepare as matrizes de entrada do modelo. Em
seguida a biblioteca deve ser chamada e o resultado salvo nas respectivas matrizes de sada. A
forma de utilizao da biblioteca pode ser observada no Cdigo Fonte A.3.

sumMatrices

Figura 29 Biblioteca RLib.

invertMatrix(matrixA : Real[1..n]) : Real[1..n]

invertMatrix

multiplyMatrixScalar(matrixA : Real[1..n], scalar: Real) :


Real[1..n]

changeMatrixSize(matrixA : Real[1..n], newLines, newColumns) :


Real[1..n]

i : Integer
matrixOutput : Real[1..n]

i : Integer
j : Integer
matrixOutput : Real[1..n]

multiplyMatrixScalar

subtractMatrices(matrixA : Real[1..n], matrixB : Real[1..n]) :


Real[1..n]

subtractMatrices
i : Integer
j : Integer
matrixOutput : Real[1..n]

i : Integer
j : Integer
matrixOutput : Real[1..n]

changeMatrizSize

sumMatrices(matrixA : Real[1..n], matrixB : Real[1..n]) :


Real[1..n]

i : Integer
j : Integer
matrixOutput : Real[1..n]

RLibAux

utiliza

RLib(A : Real[1..n], P : Real[1..n], N : Real[1..n], V : Real[1..n], O


: Real[1..n], Ins : Real[1..n], t : Real, ): (Real[1..n], Real[1..n])

RLib

transposeMatrices

multiplyMatrices(matrixA : Real[1..n], matrixB : Real[1..n]) :


Real[1..n]

i : Integer
j : Integer
matrixOutput : Real[1..n]

multiplyMatrices

transposeMatrices(matrixA : Real[1..n]) : Real[1..n]

i : Integer
j : Integer
matrixOutput : Real[1..n]

Captulo 4. Biblioteca RLib


74

75

Captulo 4. Biblioteca RLib

multiplyMatrices

RLib

transposeMatrix

invertMatrices

subtractMatrices

changeMatrixSize

1.multiplyMatrices(P , A)
PA
2.transposeMatrix(A)
AT
3.multiplyMatrices(AT , P A)
AT (P A)
4.invertMatrix(AT (P A))
T = (AT (P A))1
5.multiplyMatrices(P A, T )
Q1 = (P A) T
6.multiplyMatrices(Q1 , AT )
Q2 = Q1 AT
7.subtractMatrices(I, Q2 )
Q = I Q2
8.changeMatrixSize(Q, lines(N ), columns(N ))
Qn
9.changeMatrixSize(P , lines(N ), columns(N ))
Pn
10.invertMatrix(N )
N1
11.multiplyMatixScalar(N 1 , t /2)
B = N1 .t /2
12.multiplyMatrices(Qn , Pn )
Qn Pn
13.multiplyMatrices(Qn Pn , N )
QPN = (Qn Pn ) N
14.invertMatrix(QP N )
QPN1
15.multiplyMatrices(QP N 1 , B)
Yss = QPN1 B
16.multiplyMatrices(B, V )
BV = B V
17.sumMatrices(BV , O)
BVO = BV + O
18.multiplyMatrices(QP N 1 , BV O)
Ins = QPN1 BVO
19.multiplyMatrices(Yss , V )
YV = Yss V
20.sumMatrices(Y V , Ins ((t 1)))
Is = YV + Ins ((t 1))

Figura 30 Fluxo de chamadas da biblioteca RLib.

multiplyMatixScalar

sumMatrices

simulateRNS()

RNS1

RNSMatrix

utiliza

RNS4

utiliza

simulateRNS()

RNSMatrix(A : Real[1..n], P : Real[1..n], N : Real[1..n], V :


Real[1..n], O : Real[1..n], Ins : Real[1..n], t : Real, ): (Real[1..n],
Real[1..n])

utiliza

simulateRNS()

RNS3

utiliza

...

RNSN
simulateRNS()

Figura 31 Integrao entre a biblioteca RLib e diferentes implementaes de reatores naturalmente saturados.

utiliza

simulateRNS()

RNS2

Captulo 4. Biblioteca RLib


76

77

5 Estudos de Caso
Neste captulo, sero mostradas simulaes dos reatores descritos no captulo de
modelagem. Os modelos criados foram desenvolvidos utilizando a linguagem MODEL no
programa de transitrios ATP.

5.1 RNS monofsico com um enrolamento


Para o reator em questo, foram realizados dois experimentos. Primeiramente, foi
analisado um reator com comportamento ideal. Em seguida, foram consideradas perdas nos
enrolamentos e fluxos dispersos na simulao do reator.
O reator saturado composto pelos pontos da curva de magnetizao e seus valores
so mostrados em anexo no Cdigo Fonte A.3. Este algoritmo mostra como foi construda a
modelagem do reator naturalmente saturado sem as perdas, utilizando a linguaguem MODEL no
programa de transitrios ATP.
Os dados de entrada de reatores naturalmente saturados so mostrados na Figura 32.
Figura 32 Dados de Entrada do RNS1.

Fonte: Prprio Autor


A curva B H utilizada como entrada para o RNS monofsico com um enrolamento
(com e sem perdas) obtida a partir da descrio do material ferromagntico utilizado no
experimento, mostrada na Figura 33.
A Figura 34 apresenta o comportamento da corrente de sada do RNS sem perdas. Os
fluxos magnticos do reator so mostrados na Figura 35, e so identificados por fluxos nos
enrolamentos (O1), fluxo no julgo (O2) e fluxo de retorno (O3). Como esperado, o fluxo disperso
(representado por O4 e distribudo na cor rosa da figura) tem valor zero, pois este modelo no
considera perdas por fluxos dispersos.
Para mbito de comparao de resultados utilizou-se o componente Indutor no linear
(referencial terico 2.4) representado pelo elemento TYPE98 da ferramenta ATP sem perdas de

78

Captulo 5. Estudos de Caso

Figura 33 Curva BxH do reator monofsico saturado sem perdas.

Fonte: Prprio Autor

Figura 34 Corrente de sada do reator monofsico saturado sem perdas.

Fonte: Prprio Autor

Figura 35 Fluxos magnticos do reator monofsico saturado sem perdas.

Fonte: Prprio Autor

79

Captulo 5. Estudos de Caso

resistncia e indutncia de disperso. Este componente utiliza como entrada apenas a curva i
e seu respectivo modelo mostrado no circuito da Figura 36.
Figura 36 Circuito indutor no linear no ATPdraw.

Fonte: Prprio Autor


A comparao entre as correntes de sada do modelo RNS monofsico (apresentado
na cor verde) e o indutor no linear (apresentado na cor vermelha) visualizada na Figura
37. Pode-se observar que a diferena entre as duas correntes quase imperceptvel. Portanto,
assume-se que os resultados so equivalentes.
Figura 37 Corrente de sada do modelo UMEC do reator monofsico sem perdas X Corrente
de sada representado pelo Indutor no linear do TYPE98.

Fonte: Prprio Autor


Outra anlise realizada para o modelo em questo foi a incluso das perdas nos
enrolamentos (perdas por efeito joule) e as perdas por fluxos dispersos descritos no algoritmo do
Cdigo Fonte A.4, atravs da incluso do resistor em srie nos terminais de entrada dos modelos.
O circuito desenvolvido no ATPdraw para comparao dos resultados do RNS com
perdas contem uma resistncia e uma indutncia em srie justamente para caracterizar as perdas
(Figura 38). As simulaes realizadas no modelo UMEC do RNS com perdas so mostradas a
seguir. A incluso das perdas no reator no afetam os fluxos magnticos do ramo principal,jugo e
retorno. Pois, a alterao no cdigo do reator se deu em termos de fluxos dispersos. A Figura 39

80

Captulo 5. Estudos de Caso

Figura 38 Circuito indutor no linear do ATPdraw com perdas.

Fonte: Prprio Autor


representa os fluxos dispersos de ambas as configuraes na qual a linha verde zerada demonstra
o reator sem perdas e a curva vermelha o reator com perdas de fluxos dispersos, sendo este
comportamento completamente esperado.
Figura 39 Fluxos dispersos do reator com perdas e Fluxos dispersos do reator sem perdas.

Fonte: Prprio Autor


Figura 40 Correntes de reator com perdas e Correntes de reator sem perdas.

Fonte: Prprio Autor

81

Captulo 5. Estudos de Caso

A Figura 40 mostra o comparativo das correntes do reator com perdas (destacado em


vermelho) e sem perdas(destacado na cor verde). E como esperado, o reator com perdas tem
valor menor de corrente, pois tem menor tenso induzida no RNS e logo menor corrente. Como
a curva VxI acentuada, pequenas variaes de tenses importam em grandes variaes de
corrente.

5.2 RNS monofsico com dois enrolamentos


Para simulao do reator saturado com dois enrolamentos (Figura 21) foram realizadas
trs anlises listadas a seguir:
Reator com ensaio de curto-circuito em 10% da tenso nominal;
Reator com ensaio em vazio;
Reator com ensaio em plena carga
No passo de tempo 1e-5 segundos aplicado em cada caso. As modelagens realizadas
para o reator so apresentadas no captulo anterior e os respectivos cdigos fontes ( A.5, A.6 e
A.7) so mostrados em anexo. Nos dados de entrada Figura 41 foram adicionados as indutncias
de disperso dos enrolamentos primrio e secundrio, as tenses nos enrolamentos e as espiras
dos mesmos. Os parmetros utilizados para os ensaios so mostrados na Figura 42 e na Figura
43 o circuito montado no atpdraw, sendo V1 a tenso da fonte, R1 a resistncia da fonte e RL a
resistncia na carga.
Figura 41 Dados de Entrada do RNS2.

Fonte: Prprio Autor


Os resultados dos modelos UMECs foram comparados com o componente transformador
saturvel do atpdraw (Figura 44). As formas de ondas das correntes dos enrolamentos primrios

82

Captulo 5. Estudos de Caso

Figura 42 parmetros de testes utilizados no sistema.

Fonte: Prprio Autor


Figura 43 Reator monofsico em testes.

Fonte: Prprio Autor


e secundrios realizadas atravs dos ensaios mencionados anteriormente, so mostradas a seguir.
Nas Figuras 45 e 46 so visualizadas os grficos dos ensaios de curto-ciruito realizados pelo
RNS (na cor vermelho) e pelo transformador saturvel(na cor verde) do atpdraw. Observa-se que
ambos se comportam de forma equivalentes.
Figura 44 Circuito do transformador saturvel do atpdraw.

Fonte: Prprio Autor


Nas Figuras 47 e 48 so visualizadas os grficos dos ensaios em plena carga realizados
pelo RNS e pelo transformador saturvel do atpdraw. E por fim, as simulaes comparativas dos
ensaios em vazio realizados pelo RNS (na cor vermelha) e pelo transformador saturvel (na cor
verde) do atpdraw so mostradas nas Figuras 49 e 50.

83

Captulo 5. Estudos de Caso

Figura 45 Comparativo de correntes primrias dos ensaios de curto-circuito do RNS e do


transformador saturvel do atpdraw.

Fonte: Prprio Autor


Figura 46 Comparativo de correntes secundrias dos ensaios de curto-circuito do RNS e do
transformador saturvel do atpdraw.

Fonte: Prprio Autor


Figura 47 Comparativo de correntes primrias dos ensaios de plena carga do RNS e do
transformador saturvel do atpdraw.

Fonte: Prprio Autor

84

Captulo 5. Estudos de Caso

Figura 48 Comparativo de correntes psecundrias dos ensaios de plena carga do RNS e do


transformador saturvel do atpdraw.

Fonte: Prprio Autor


Figura 49 Comparativo de correntes primrias dos ensaios em vazio do RNS e do transformador
saturvel do atpdraw.

Fonte: Prprio Autor


Figura 50 Comparativo de correntes secundrias dos ensaios em vazio do RNS e do
transformador saturvel do atpdraw.

Fonte: Prprio Autor

85

Captulo 5. Estudos de Caso

De acordo com os resultados mostrados nas figuras, fica claro que os comportamentos
do RNS e do componente transformador saturvel so equivalentes. Demonstrando que o RNS
modelado na MODELS possui alto grau de confiabilidade e equivalncia nos seus resultados.

5.3 RNS trifsico com seis enrolamentos


O reator trifsico de trs ncleos e seis enrolamentos (Figura 23) possui ligao estrelatringulo sendo modelado com 48 pontos da curva BxH. Primeiro, foi desenvolvido um reator
sem perdas de histerese, depois, o lao de histerese foi adicionado, pois este est diretamente
relacionado com a largura da curva BxH. A rea do ciclo de histerese representada durante
a regio de no saturao, e a relutncia neste intervalo praticamente constante. A curva
de histerese foi inserida no modelo para ser possvel medir perdas no ncleo. O cdigo da
modelagem deste reator pode ser visto no anexo em Cdigo Fonte A.9. Os parmetros de entrada
para simulao desse reator mostrado na Figura 51. As formas de onda das correntes so vistas
na Figura 52.
Figura 51 Parmetros de entrada do reator de 6 enrolamentos.

Fonte: Prprio Autor

Figura 52 Corrente trifsica nos enrolamentos primrio e secudrio do reator trifsico.


Fonte: Prprio Autor

86

Captulo 5. Estudos de Caso

As tenses trifsicas nos enrolamentos primrios e secudrios do reator de seis


enrolamentos so mostradas na Figura 53. A corrente de fase A vista na Figura 54 e o
lao de histerese na Figura 55. Para mbito de comparao com este reator, foi utilizado o
transformador saturvel do atpdraw representado na Figura 56.
A base que norteia a utlizao de um recurso pr-existente na plataforma ATP, como
j falado, se apoia no fato que a estrutura construtiva de um reator saturado apresenta grande
similaridade com a de transformadores.
Figura 53 Tenso trifsica nos enrolamentos primrio e secundrio do reator trifsico.

Fonte: Prprio Autor


Figura 54 Corrente na fase A no enrolamento primrio do RNS3YD.

Fonte: Prprio Autor


A Figura 57 apresenta as curvas das correntes nas fases A, B e C do reator trifsico
RNS3YD com seis enrolamentos e as correntes do transformador saturvel. Os resultados
mostraram uma diferena mnima de 4,14% das correntes na fase A, 4,06% nas correntes de fase
B e 3,85% nas correntes de fase C. Isso de deu a presena do retorno no UMEC. Demonstrando
que o modelo desenvolvido neste trabalho equivalente e possui resultados satisfatrios.

5.4 RNS trifsico com nove enrolamentos


O reator naturalmente saturado com trs ncleos e nove enrolamentos (Figura 25) foi
configurado na ligao zigazague-delta como mostra o anexo de Cdigo Fonte A.11. Tambm

87

Captulo 5. Estudos de Caso

Figura 55 Lao de histerese do RNS3YD.

Fonte: Prprio Autor


Figura 56 transformador saturvel do atpdraw.

Fonte: Prprio Autor


Figura 57 Corrente de fase A dos RNS3YD X Transformador saturvel do ATPdraw.

Fonte: Prprio Autor


foi considerado os efeitos da histerese neste reator e possui os mesmos 48 pontos da curva BxH
utilizado na configurao anterior. Os dados de entrada utilizados para a modelagem deste reator
mostrado na Figura 58.
O reator em questo contm a mesma quantidade de ncleos do reator de seis
enrolamentos, acrescentando um enrolamento para cada fase, totalizando 9 enrolamentos. O
acrscimo de enrolamentos dentro do mesmo ncleo, no modificam amplitudes de corrente ou
tenso.

88

Captulo 5. Estudos de Caso

Figura 58 Parmetros de entrada do reator RNS9.

Fonte: Prprio Autor


Figura 59 Corrente de fase A dos reatores trifsicos RNS9 e o RNS3YD.

Fonte: Prprio Autor


As modificaes se do nas defasagens angulares, pois para o reator de 6 enrolamentos
as foras eletromotrizes so defasadas em /6 uma das outras. Para o reator de 9 enrolamentos
esta desafasagem /9. A diferena angular entre os dois reatores representando a cor vermelha
o reator com nove enrolamentos e na cor verde o de seis enrolamentos visualizada na Figura 59.
Como esperado, o reator proposto se desenvolveu como deveria com as respectivas defasagens e
mesma amplitudade. Concluindo que o modelo vlido e se comporta de forma satisfatria.

5.5 RNS trifsico em Monobloco com Doze Enrolamentos


O reator proposto possui configurao em Monobloco contendo 6 ncleos
(I,II,III,IV,V,VI) e 12 enrolamentos (Figura 27). Nesta montagem existe duas unidades trifsicas
independentes: A primeira compreende os ncleos I, II e III a segunda compreende os outros

89

Captulo 5. Estudos de Caso

trs ncleos, operando em paralelo (Figura 60).


Figura 60 Reator com ligao paralela dos enrolamentos.

Fonte: (FONTE, 1997)


Nesta configurao as FMMs possui uma defasagem de /6 radianos, isto acarretar a
ocorrncia de saturao de um ncleo para cada unidade trifsica simultaneamente. Para atender
a exigncia, cada ncleo permanece saturado por um perodo de /3 radianos.
A cada semiciclo da tenso de alimentao, a saturao atinge uma vez qualquer um
desses ncleos, nesse momento um pulso de corrente percorre o enrolamento montado no mesmo.
Esta mesma corrente circular em outro enrolamento de mesma fase pertencente ao ncleo
que deveria operar isento de saturao. Seguindo esta linha de raciocnio, todas as fases tero
correntes em formas de pulso.
As correntes obtidas atravs da soma das contribuies das duas unidades trifsicas para
a fase A, assinala a Figura 61. As tenses nos enrolamentos primrios (V1A,V1B,V1C,V1D,V1E
e V1F) do reator mostrado na Figura 62. Observando as figuras, conclui-se que seus comportamentos esto conforme esperado para este tipo de reator.

90

Captulo 5. Estudos de Caso

Figura 61 Corrente da fase A do RNS em Monobloco.

Fonte: Prpria

Figura 62 Tenses nos enrolamentos de entrada do RNS em Monobloco.

Fonte: Prpria

91

6 Concluso
O programa computacional ATP muito utilizado na engenharia e academia para
simulaes de transitrios eletromagnticos em sistemas eltricos uma ferramenta importante
para anlises de componentes no lineares, tais como, reatores saturados. O ATP possui uma
biblioteca de componentes que podem ser utilizados diretamente pelo usurio para modelagem
de circuitos eltricos. Contudo, impossvel representar todos os componentes eltricos
existentes. Portanto, o programa ATP permite tambm que os usurios criem seus prprios
modelos utilizando a linguagem MODELS na qual pode-se especificar e modificar os valores
de parmetros (numricos e/ou analgicos) para controlar operao de componentes eltricos
do sistema simulado. Na linguagem MODELS, possvel implementar grandezas magnticas
essenciais para anlises de diversos componentes, tais como, fluxos magnticos, permencias,
intensidade de campo magntico, densidade magntica.
O processo de compensao de reativos muito utilizado nos dias de hoje para encontrar
a conformidade e qualidade dos padres de tenso no sistema eltrico de potncia. Algumas
solues, como compensadores eletrnicos so utilizados, porm, com custo bastante elevado e
pouco tempo de vida. Uma outra alternativa para a compensao de reativos, seria a utilizao
de reatores naturalmente saturados, eles so mais baratos, possuem manuteno de baixo custo,
elevada confiabilidade e equipamento de alta resistncia a intempries. No entanto, por se tratar
de um componentes altamente especializado este componente no representa um componente
pr-existente na biblioteca do ATP.
No intuito de se criar um modelo para reatores naturalmente saturados para o ATP, este
trabalho props uma biblioteca de suporte a criao de reatores naturalmente saturados utilizando
modelos de circuito equivalente magntico unificado (UMEC). Este modelo de circuito calcula
o fluxo magntico no ramo em cada etapa de tempo, que determina a admitncia equivalente
que adicionado com uma derivao entre os terminais do circuito equivalente de Norton para
representar as perdas no ncleo magntico.
As contribuies do trabalho so listadas a seguir. Foi apresentado uma viso geral
e importncia das ferramentas ATP e linguagem MODELS. Alm disso, foram destacados
conceitos importantes relacionados aos reatores naturalmente saturados e como trabalhar com
sua natureza no linear (mtodo da linearizao por trechos). A descrio matemtica utilizando
modelagem UMEC foi apresentada para diferentes tipos de RNSs. Uma vez apresentada a
modelagem matemtica dos reatores, foi descrito o cdigo da biblioteca proposta e sua ligao
com o referencial terico. Por fim, um conjunto de estudos de caso foram apresentados para
demonstrar a viabilidade da soluo proposta.

Captulo 6. Concluso

92

6.1 Sugestes para trabalhos futuros


Com a crescente demanda de aplicaes de reatores saturados para compensao de
linhas de transmisso em grandes eixos de transferncias de potncia, esse assunto muito
estudado na busca de resultados mais eficientes. Algumas sugestes para trabalhos futuros so
indicadas a seguir:
Expandir a modelagem de UMECs utilizando a linguaguem MODELS para projetar
reatores com nmeros genricos de ncleos, diversos enrolamentos e diferentes
configuraes. Beneficiando-se da agilidade que a biblioteca desenvolvida neste trabalho
proporciona para os projetos.
Realizar uma anlise ampla dos reatores, observando o comportamento das foras
eletromotrizes e seus respectivos harmnicos.
Aperfeioar a biblioteca desenvolvida na linguaguem MODELS, para ampliao de
simulao dos reatores saturados.
Adaptar a biblioteca proposta para a linguagem C e comparar aspectos de performance
na simulao de reatores entre a biblioteca proposta e sua respectiva verso escrita na
linguagem C.

93

A Cdigo Fonte da biblioteca RLIB


A.1 Cdigo Fonte do Modelo para Inverso de Matrizes
1 MODEL invertMatrix
2
INPUT matrixInput[1..900], matrixDimension
3
VAR y[1..900], size, P[1..900], matrixI[1..900], i, j, k
4
matrixPivot[1..900], max_i, elem1, elem2, swap1, swap2, c
5
matrixPA[1..900], L[1..900], U[1..900], s, determinant,
6
Z[1..900],X[1..900], linesOut, columnsOut
7
8
OUTPUT
9
X[1..900], linesOut, columnsOut, determinant
10
EXEC
11
12
linesOut := matrixDimension
13
columnsOut := matrixDimension
14
15
y[1..900] := matrixInput[1..900]
16
size:=matrixDimension
17
18
matrixI[1..900] := 0
19
matrixPA[1..900] := 0
20
Z[1..900] := 0
21
X[1..900] := 0
22
L[1..900] := 0
23
U[1..900] := 0
24
25
26
------------------------------------------------------------27
-- CREATE IDENTITY MATRIX
28
------------------------------------------------------------29
FOR i:=1 TO size DO
30
matrixI[(i-1)*size + i]:=1
31
ENDFOR
32
33
------------------------------------------------------------34
-- CREATE PIVOT MATRIX
35
------------------------------------------------------------36
matrixPivot[1..900] := matrixI[1..900]
37
38
FOR j :=1 TO size DO
39
max_i := j
40
41
FOR i := j TO size DO
42
elem1 := abs(y[(i-1)*size + j])
43
elem2 := abs(y[(max_i-1)*size + j])
44
45
IF elem1 > elem2 THEN
46
max_i := i
47
ENDIF
48
ENDFOR
49
50
i := j
51

Apndice A. Cdigo Fonte da biblioteca RLIB

52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111

IF i <> max_i THEN


FOR k :=1 TO size DO
swap1 := matrixPivot[(i-1)*size + k]
swap2 := matrixPivot[(max_i-1)*size + k]
matrixPivot[(max_i-1)*size + k] := swap1
matrixPivot[(i-1)*size+ k] := swap2
ENDFOR
ENDIF
ENDFOR
-------------------------------------------------------------- MULTIPLY PIVOT BY THE INPUT MATRIX
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
c := 0
FOR k:=1 TO size DO
c := c + matrixPivot[(i-1)*size + k]*y[(k-1)*size + j]
ENDFOR
matrixPA[(i-1)*size + j] := c
ENDFOR
ENDFOR
-------------------------------------------------------------- PREPARE MATRICES L AND U
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
IF i = j THEN L[(i-1)*size + j]:=1 ELSE L[(i-1)*size + j]:=0
ENDIF
ENDFOR
ENDFOR
-------------------------------------------------------------- PREPARE MATRICES L AND U
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
IF i = j THEN U[(i-1)*size + j]:=1 ELSE U[(i-1)*size + j]:=0
ENDIF
ENDFOR
ENDFOR
-------------------------------------------------------------- Calculate L AND U
------------------------------------------------------------FOR j := 1 TO size DO
FOR i :=1 TO size DO
IF i <= j THEN
s := 0
IF j > 1 THEN
FOR k:=1 TO j - 1 DO
s := s + U[(k-1)*size + j]*L[(i-1)*size + k]
ENDFOR
ENDIF
U[(i-1)*size + j] := matrixPA[(i-1)*size + j] - s
ENDIF
IF i > j THEN
s := 0
IF i > 1 THEN

94

Apndice A. Cdigo Fonte da biblioteca RLIB

112
FOR k:=1 TO i - 1 DO
113
s := s + U[(k-1)*size + j]*L[(i-1)*size + k]
114
ENDFOR
115
ENDIF
116
L[(i-1)*size + j] := (matrixPA[(i-1)*size + j] - s)/U[(j-1)*size + j]
117
ENDIF
118
ENDFOR
119
ENDFOR
120
121
122
------------------------------------------------------------123
-- Find the determinant
124
------------------------------------------------------------125
determinant := 1
126
FOR i:=1 TO size DO
127
determinant := determinant * L[(i-1)*size + i]
128
determinant := determinant * U[(i-1)*size + i]
129
ENDFOR
130
131
IF determinant <> 0 THEN
132
------------------------------------------------------------133
-- Calculating the matrix Z
134
------------------------------------------------------------135
FOR i:=1 TO size DO
136
FOR j:=1 TO size DO
137
s := 0
138
FOR k:=1 TO size DO
139
s := s + L[(i-1)*size + k]*Z[(k-1)*size + j]
140
ENDFOR
141
Z[(i-1)*size + j] := (matrixPivot[(i-1)*size + j] - s)/L[(i-1)*size + i];
142
ENDFOR
143
ENDFOR
144
145
------------------------------------------------------------146
-- Calculating the matrix X
147
------------------------------------------------------------148
FOR j:=1 TO size DO
149
X[(size-1)*size + j] := Z[(size-1)*size + j]/U[(size-1)*size + size];
150
IF size > 1 THEN
151
FOR i:=size-1 TO 1 BY (-1) DO
152
s := 0
153
FOR k:=i+1 TO size DO
154
s := s + U[(i-1)*size + k]*X[(k-1)*size + j]
155
ENDFOR
156
X[(i-1)*size + j] := (Z[(i-1)*size + j] - s)/U[(i-1)*size + i];
157
ENDFOR
158
ENDIF
159
ENDFOR
160
ENDIF
161
ENDEXEC
162 ENDMODEL

Cdigo Fonte A.1 Mdulo da biblioteca RLib para inverso de matrizes

A.2 Cdigo Fonte da Biblioteca RLib


1 MODEL RNSMatrix

95

Apndice A. Cdigo Fonte da biblioteca RLIB

2 INPUT deltaTime,
3 lMatrixA, cMatrixA, MatrixA[1..900],
4 lMP, cMP, MP[1..900]
5 lMatrixN, cMatrixN, MatrixN[1..900]
6 lMatrixV, cMatrixV, MatrixV[1..900]
7 lMatrixO, cMatrixO, MatrixO[1..900],
8 lMatrixInsIn, cMatrixInsIn, MatrixInsIn[1..900]
9 VAR mSize, dt, determnt, aux,
10 lMatrixP, cMatrixP, MatrixP[1..900]
11 lMatrixI, cMatrixI, MatrixI[1..900]
12 lMatrixPA, cMatrixPA, MatrixPA[1..900]
13 lMatrixTA, cMatrixTA, MatrixTA[1..900]
14 lMatrixTAPA, cMatrixTAPA, MatrixTAPA[1..900]
15 lMatrixITAPA, cMatrixITAPA, MatrixITAPA[1..900]
16 lMatrixQ1, cMatrixQ1, MatrixQ1[1..900]
17 lMatrixQ2, cMatrixQ2, MatrixQ2[1..900]
18 lMatrixQ, cMatrixQ, MatrixQ[1..900]
19 lMatrixINss, cMatrixINss, MatrixINss[1..900]
20 lMatrixTemp1, cMatrixTemp1, MatrixTemp1[1..900]
21 lMatrixQP, cMatrixQP, MatrixQP[1..900]
22 lMatrixQPN, cMatrixQPN, MatrixQPN[1..900]
23 lMatrixTemp2, cMatrixTemp2, MatrixTemp2[1..900]
24 lMatrixYss, cMatrixYss, MatrixYss[1..900]
25 lMatrixT1V, cMatrixT1V, MatrixT1V[1..900]
26 lMatrixT1VF, cMatrixT1VF, MatrixT1VF[1..900]
27 lMatrixIns, cMatrixIns, MatrixIns[1..900]
28 lMatrixYssV, cMatrixYssV, MatrixYssV[1..900]
29 lMatrixIs, cMatrixIs, MatrixIs[1..900]
30 OUTPUT
31 lMatrixIns, cMatrixIns, MatrixIns[1..900]
32 lMatrixIs, cMatrixIs, MatrixIs[1..900]
33
34 MODEL sumMatrices
35
INPUT linesA, columnsA, mmA[1..900]
36
linesB, columnsB, mmB[1..900]
37
VAR i, j, c, mmOut[1..900], linesOut, columnsOut
38
OUTPUT
39
mmOut[1..900], linesOut, columnsOut
40
INIT
41
i := 0, j:= 0, c:= 0, mmOut[1..900]:=0
42
ENDINIT
43
EXEC
44
45
linesOut := linesA, columnsOut := columnsA
46
47
------------------------------------------------------------48
-- SUM THE MATRICES
49
------------------------------------------------------------50
FOR i:=1 TO linesA DO
51
FOR j:=1 TO columnsA DO
52
mmOut[(i-1)*columnsA + j] := mmA[(i-1)*columnsA + j]+mmB[(i-1)*columnsB + j]
53
ENDFOR
54
ENDFOR
55
ENDEXEC
56 ENDMODEL
57
58 MODEL subtractMatrices
59
INPUT linesA, columnsA, mmA[1..900]
60
linesB, columnsB, mmB[1..900]
61
VAR i, j, c, mmOut[1..900], linesOut, columnsOut

96

Apndice A. Cdigo Fonte da biblioteca RLIB

62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121

OUTPUT
mmOut[1..900], linesOut, columnsOut
INIT
i := 0, j:= 0, c:= 0, mmOut[1..900]:=0
ENDINIT
EXEC
linesOut := linesA, columnsOut := columnsA
-------------------------------------------------------------- SUM THE MATRICES
------------------------------------------------------------FOR i:=1 TO linesA DO
FOR j:=1 TO columnsA DO
mmOut[(i-1)*columnsA + j] := mmA[(i-1)*columnsA + j]-mmB[(i-1)*columnsB + j]
ENDFOR
ENDFOR
ENDEXEC
ENDMODEL
MODEL transposeMatrix
INPUT linesA, columnsA, mmA[1..900]
VAR i, j, mmOut[1..900], linesOut, columnsOut
OUTPUT
mmOut[1..900], linesOut, columnsOut
INIT
i := 0, j:= 0, mmOut[1..900]:=0
ENDINIT
EXEC
linesOut := columnsA
columnsOut := linesA
-------------------------------------------------------------- MULTIPLY THE MATRICES
------------------------------------------------------------FOR i:=1 TO linesA DO
FOR j:=1 TO columnsA DO
mmOut[(j-1)*columnsOut + i] := mmA[(i-1)*columnsA + j]
ENDFOR
ENDFOR
ENDEXEC
ENDMODEL
MODEL changeMatrixSize
INPUT linesA, columnsA, mmA[1..900],
newLines, newColumns
VAR i, j, mmOut[1..900], linesOut, columnsOut
OUTPUT
mmOut[1..900], linesOut, columnsOut
INIT
i := 0, j:= 0, mmOut[1..900]:=0
ENDINIT
EXEC
linesOut := newLines
columnsOut := newColumns
-------------------------------------------------------------- MULTIPLY THE MATRICES

97

Apndice A. Cdigo Fonte da biblioteca RLIB

122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181

------------------------------------------------------------FOR i:=1 TO newLines DO


FOR j:=1 TO newColumns DO
mmOut[(i-1)*columnsOut + j] := mmA[(i-1)*columnsA + j]
ENDFOR
ENDFOR
ENDEXEC
ENDMODEL
MODEL multiplyMatrixScalar
INPUT linesA, columnsA, mmA[1..900],
scalar
VAR i, j, mmOut[1..900], linesOut, columnsOut
OUTPUT
mmOut[1..900], linesOut, columnsOut
INIT
i := 0, j:= 0, mmOut[1..900]:=0
ENDINIT
EXEC
linesOut := linesA
columnsOut := columnsA
-------------------------------------------------------------- MULTIPLY THE MATRICES
------------------------------------------------------------FOR i:=1 TO linesA DO
FOR j:=1 TO columnsA DO
mmOut[(i-1)*columnsOut + j] := mmA[(i-1)*columnsA + j]*scalar
ENDFOR
ENDFOR
ENDEXEC
ENDMODEL
MODEL printMatrix
INPUT linesA, columnsA, mmA[1..900]
VAR i, j
EXEC
write("**********")
FOR i:=1 TO linesA DO
FOR j:=1 TO columnsA DO
write(mmA[(i-1)*columnsA + j])
ENDFOR
write("----------")
ENDFOR
ENDEXEC
ENDMODEL

MODEL multiplyMatrices
INPUT linesA, columnsA, mmA[1..900]
linesB, columnsB, mmB[1..900]
VAR i, j, c, k, mmOut[1..900], linesOut, columnsOut
OUTPUT
mmOut[1..900], linesOut, columnsOut
INIT
i := 0, j:= 0, c:= 0, k:=0, mmOut[1..900]:=0
ENDINIT
EXEC

98

Apndice A. Cdigo Fonte da biblioteca RLIB

182
linesOut := linesA
183
columnsOut := columnsB
184
185
------------------------------------------------------------186
-- MULTIPLY THE MATRICES
187
------------------------------------------------------------188
FOR i:=1 TO linesA DO
189
FOR j:=1 TO columnsB DO
190
c := 0
191
FOR k:=1 TO linesB DO
192
c := c + mmA[(i-1)*columnsA + k]*mmB[(k-1)*columnsB + j]
193
ENDFOR
194
mmOut[(i-1)*columnsB + j] := c
195
ENDFOR
196
ENDFOR
197
ENDEXEC
198 ENDMODEL
199
200 MODEL invertMatrix
201
INPUT matrixInput[1..900], matrixDimension
202
VAR y[1..900], size, P[1..900], matrixI[1..900], i, j, k
203
matrixPivot[1..900], max_i, elem1, elem2, swap1, swap2, c
204
matrixPA[1..900], L[1..900], U[1..900], s, determinant,
205
Z[1..900],X[1..900], linesOut, columnsOut
206
207
OUTPUT
208
X[1..900], linesOut, columnsOut, determinant
209
EXEC
210
211
linesOut := matrixDimension
212
columnsOut := matrixDimension
213
214
y[1..900] := matrixInput[1..900]
215
size:=matrixDimension
216
217
matrixI[1..900] := 0
218
matrixPA[1..900] := 0
219
Z[1..900] := 0
220
X[1..900] := 0
221
L[1..900] := 0
222
U[1..900] := 0
223
224
225
------------------------------------------------------------226
-- CREATE IDENTITY MATRIX
227
------------------------------------------------------------228
FOR i:=1 TO size DO
229
matrixI[(i-1)*size + i]:=1
230
ENDFOR
231
232
------------------------------------------------------------233
-- CREATE PIVOT MATRIX
234
------------------------------------------------------------235
matrixPivot[1..900] := matrixI[1..900]
236
237
FOR j :=1 TO size DO
238
max_i := j
239
240
FOR i := j TO size DO
241
elem1 := abs(y[(i-1)*size + j])

99

Apndice A. Cdigo Fonte da biblioteca RLIB

242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301

elem2 := abs(y[(max_i-1)*size + j])


IF elem1 > elem2 THEN
max_i := i
ENDIF
ENDFOR
i := j
IF i <> max_i THEN
FOR k :=1 TO size DO
swap1 := matrixPivot[(i-1)*size + k]
swap2 := matrixPivot[(max_i-1)*size + k]
matrixPivot[(max_i-1)*size + k] := swap1
matrixPivot[(i-1)*size+ k] := swap2
ENDFOR
ENDIF
ENDFOR
-------------------------------------------------------------- MULTIPLY PIVOT BY THE INPUT MATRIX
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
c := 0
FOR k:=1 TO size DO
c := c + matrixPivot[(i-1)*size + k]*y[(k-1)*size + j]
ENDFOR
matrixPA[(i-1)*size + j] := c
ENDFOR
ENDFOR
-------------------------------------------------------------- PREPARE MATRICES L AND U
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
IF i = j THEN L[(i-1)*size + j]:=1 ELSE L[(i-1)*size + j]:=0
ENDIF
ENDFOR
ENDFOR
-------------------------------------------------------------- PREPARE MATRICES L AND U
------------------------------------------------------------FOR i:=1 TO size DO
FOR j:=1 TO size DO
IF i = j THEN L[(i-1)*size + j]:=1 ELSE L[(i-1)*size + j]:=0
ENDIF
ENDFOR
ENDFOR
-------------------------------------------------------------- Calculate L AND U
------------------------------------------------------------FOR j := 1 TO size DO
FOR i :=1 TO size DO
IF i <= j THEN
s := 0
IF j > 1 THEN

100

Apndice A. Cdigo Fonte da biblioteca RLIB

302
FOR k:=1 TO j - 1 DO
303
s := s + U[(k-1)*size + j]*L[(i-1)*size + k]
304
ENDFOR
305
ENDIF
306
U[(i-1)*size + j] := matrixPA[(i-1)*size + j] - s
307
ENDIF
308
IF i > j THEN
309
s := 0
310
IF i > 1 THEN
311
FOR k:=1 TO i - 1 DO
312
s := s + U[(k-1)*size + j]*L[(i-1)*size + k]
313
ENDFOR
314
ENDIF
315
L[(i-1)*size + j] := (matrixPA[(i-1)*size + j] - s)/U[(j-1)*size + j]
316
ENDIF
317
ENDFOR
318
ENDFOR
319
320
321
------------------------------------------------------------322
-- Find the determinant
323
------------------------------------------------------------324
determinant := 1
325
FOR i:=1 TO size DO
326
determinant := determinant * L[(i-1)*size + i]
327
determinant := determinant * U[(i-1)*size + i]
328
ENDFOR
329
330
IF determinant <> 0 THEN
331
------------------------------------------------------------332
-- Calculating the matrix Z
333
------------------------------------------------------------334
FOR i:=1 TO size DO
335
FOR j:=1 TO size DO
336
s := 0
337
FOR k:=1 TO size DO
338
s := s + L[(i-1)*size + k]*Z[(k-1)*size + j]
339
ENDFOR
340
Z[(i-1)*size + j] := (matrixPivot[(i-1)*size + j] - s)/L[(i-1)*size + i];
341
ENDFOR
342
ENDFOR
343
344
------------------------------------------------------------345
-- Calculating the matrix X
346
------------------------------------------------------------347
FOR j:=1 TO size DO
348
X[(size-1)*size + j] := Z[(size-1)*size + j]/U[(size-1)*size + size];
349
IF size > 1 THEN
350
FOR i:=size-1 TO 1 BY (-1) DO
351
s := 0
352
FOR k:=i+1 TO size DO
353
s := s + U[(i-1)*size + k]*X[(k-1)*size + j]
354
ENDFOR
355
X[(i-1)*size + j] := (Z[(i-1)*size + j] - s)/U[(i-1)*size + i];
356
ENDFOR
357
ENDIF
358
ENDFOR
359
ENDIF
360
ENDEXEC
361 ENDMODEL

101

Apndice A. Cdigo Fonte da biblioteca RLIB

362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421

EXEC
mSize:=900
dt := deltaTime
lMatrixP := lMP
cMatrixP := cMP
MatrixP[1..mSize] := MP[1..mSize]
lMatrixI := lMatrixP
cMatrixI := lMatrixI
MatrixI[1..mSize]:=0
FOR i:=1 TO cMatrixI DO
MatrixI[(i-1)*cMatrixI + i]:=1
ENDFOR
lMatrixIns := lMatrixO
cMatrixIns := cMatrixO
MatrixIns[1..900] := 0
lMatrixIs := lMatrixO
cMatrixIs := cMatrixO
MatrixIs[1..900] := 0
USE multiplyMatrices as mm2
INPUT
linesA := lMatrixP,
columnsA := cMatrixP,
mmA[1..mSize] := MatrixP[1..mSize]
linesB := lMatrixA,
columnsB := cMatrixA,
mmB[1..mSize] := MatrixA[1..mSize]
OUTPUT
lMatrixPA := linesOut,
cMatrixPA:= columnsOut,
MatrixPA[1..mSize] := mmOut[1..mSize]
ENDUSE
USE transposeMatrix as tm1
INPUT
linesA := lMatrixA,
columnsA := cMatrixA,
mmA[1..mSize] := MatrixA[1..mSize]
OUTPUT
lMatrixTA := linesOut,
cMatrixTA:= columnsOut,
MatrixTA[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm2
INPUT
linesA := lMatrixTA,
columnsA := cMatrixTA,
mmA[1..mSize] := MatrixTA[1..mSize]
linesB := lMatrixPA,
columnsB := cMatrixPA,
mmB[1..mSize] := MatrixPA[1..mSize]

102

Apndice A. Cdigo Fonte da biblioteca RLIB

422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481

OUTPUT
lMatrixTAPA := linesOut,
cMatrixTAPA:= columnsOut,
MatrixTAPA[1..mSize] := mmOut[1..mSize]
ENDUSE
USE invertMatrix as im1
INPUT
matrixInput[1..mSize] := MatrixTAPA[1..mSize],
matrixDimension := lMatrixTAPA
OUTPUT
lMatrixITAPA := linesOut,
cMatrixITAPA:= columnsOut,
MatrixITAPA[1..mSize] := X[1..mSize],
determnt := determinant
ENDUSE
IF determnt <> 0 THEN
--write("Calculou! 1", lMatrixITAPA, cMatrixITAPA)
USE multiplyMatrices as mm3
INPUT
linesA := lMatrixPA,
columnsA := cMatrixPA,
mmA[1..mSize] := MatrixPA[1..mSize]
linesB := lMatrixITAPA,
columnsB := cMatrixITAPA,
mmB[1..mSize] := MatrixITAPA[1..mSize]
OUTPUT
lMatrixQ1 := linesOut,
cMatrixQ1:= columnsOut,
MatrixQ1[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm4
INPUT
linesA := lMatrixQ1,
columnsA := cMatrixQ1,
mmA[1..mSize] := MatrixQ1[1..mSize]
linesB := lMatrixTA,
columnsB := cMatrixTA,
mmB[1..mSize] := MatrixTA[1..mSize]
OUTPUT
lMatrixQ2 := linesOut,
cMatrixQ2:= columnsOut,
MatrixQ2[1..mSize] := mmOut[1..mSize]
ENDUSE
USE subtractMatrices as sm1
INPUT
linesA := lMatrixI,
columnsA := cMatrixI,
mmA[1..mSize] := MatrixI[1..mSize]
linesB := lMatrixQ2,
columnsB := cMatrixQ2,
mmB[1..mSize] := MatrixQ2[1..mSize]
OUTPUT
lMatrixQ := linesOut,
cMatrixQ:= columnsOut,
MatrixQ[1..mSize] := mmOut[1..mSize]
ENDUSE

103

Apndice A. Cdigo Fonte da biblioteca RLIB

482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541

USE changeMatrixSize as cms1


INPUT
linesA := lMatrixQ,
columnsA := cMatrixQ,
mmA[1..mSize] := MatrixQ[1..mSize]
newLines := lMatrixN,
newColumns := lMatrixN,
OUTPUT
lMatrixQ := linesOut,
cMatrixQ:= columnsOut,
MatrixQ[1..mSize] := mmOut[1..mSize]
ENDUSE
USE changeMatrixSize as cms2
INPUT
linesA := lMatrixP,
columnsA := cMatrixP,
mmA[1..mSize] := MatrixP[1..mSize]
newLines := lMatrixN,
newColumns := lMatrixN,
OUTPUT
lMatrixP := linesOut,
cMatrixP:= columnsOut,
MatrixP[1..mSize] := mmOut[1..mSize]
ENDUSE
USE invertMatrix as im2
INPUT
matrixInput[1..mSize] := MatrixN[1..mSize],
matrixDimension := lMatrixN
OUTPUT
lMatrixINss := linesOut,
cMatrixINss:= columnsOut,
MatrixINss[1..mSize] := X[1..mSize],
determnt := determinant
ENDUSE
IF determnt <> 0 THEN
--write("Calculou! 2", lMatrixINss, cMatrixINss)
aux := dt/2
USE multiplyMatrixScalar as me1
INPUT
linesA := lMatrixINss,
columnsA := cMatrixINss,
mmA[1..mSize] := MatrixINss[1..mSize]
scalar := aux
OUTPUT
lMatrixTemp1 := linesOut,
cMatrixTemp1:= columnsOut,
MatrixTemp1[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm5
INPUT
linesA := lMatrixQ,
columnsA := cMatrixQ,
mmA[1..mSize] := MatrixQ[1..mSize]
linesB := lMatrixP,

104

Apndice A. Cdigo Fonte da biblioteca RLIB

542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601

columnsB := cMatrixP,
mmB[1..mSize] := MatrixP[1..mSize]
OUTPUT
lMatrixQP := linesOut,
cMatrixQP:= columnsOut,
MatrixQP[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm6
INPUT
linesA := lMatrixQP,
columnsA := cMatrixQP,
mmA[1..mSize] := MatrixQP[1..mSize]
linesB := lMatrixN,
columnsB := cMatrixN,
mmB[1..mSize] := MatrixN[1..mSize]
OUTPUT
lMatrixQPN := linesOut,
cMatrixQPN:= columnsOut,
MatrixQPN[1..mSize] := mmOut[1..mSize]
ENDUSE
USE invertMatrix as im3
INPUT
matrixInput[1..mSize] := MatrixQPN[1..mSize],
matrixDimension := lMatrixQPN
OUTPUT
lMatrixTemp2 := linesOut,
cMatrixTemp2:= columnsOut,
MatrixTemp2[1..mSize] := X[1..mSize],
determnt := determinant
ENDUSE
IF determnt <> 0 THEN
--write("Calculou!")
USE multiplyMatrices as mm7
INPUT
linesA := lMatrixTemp2,
columnsA := cMatrixTemp2,
mmA[1..mSize] := MatrixTemp2[1..mSize]
linesB := lMatrixTemp1,
columnsB := cMatrixTemp1,
mmB[1..mSize] := MatrixTemp1[1..mSize]
OUTPUT
lMatrixYss := linesOut,
cMatrixYss:= columnsOut,
MatrixYss[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm8
INPUT
linesA := lMatrixTemp1,
columnsA := cMatrixTemp1,
mmA[1..mSize] := MatrixTemp1[1..mSize]
linesB := lMatrixV,
columnsB := cMatrixV,
mmB[1..mSize] := MatrixV[1..mSize]
OUTPUT
lMatrixT1V := linesOut,
cMatrixT1V:= columnsOut,

105

Apndice A. Cdigo Fonte da biblioteca RLIB

602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661

MatrixT1V[1..mSize] := mmOut[1..mSize]
ENDUSE
USE sumMatrices as sm1
INPUT
linesA := lMatrixT1V,
columnsA := cMatrixT1V,
mmA[1..mSize] := MatrixT1V[1..mSize]
linesB := lMatrixO,
columnsB := cMatrixO,
mmB[1..mSize] := MatrixO[1..mSize]
OUTPUT
lMatrixT1VF := linesOut,
cMatrixT1VF:= columnsOut,
MatrixT1VF[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm8
INPUT
linesA := lMatrixTemp2,
columnsA := cMatrixTemp2,
mmA[1..mSize] := MatrixTemp2[1..mSize]
linesB := lMatrixT1VF,
columnsB := cMatrixT1VF,
mmB[1..mSize] := MatrixT1VF[1..mSize]
OUTPUT
lMatrixIns := linesOut,
cMatrixIns:= columnsOut,
MatrixIns[1..mSize] := mmOut[1..mSize]
ENDUSE
USE multiplyMatrices as mm9
INPUT
linesA := lMatrixYss,
columnsA := cMatrixYss,
mmA[1..mSize] := MatrixYss[1..mSize]
linesB := lMatrixV,
columnsB := cMatrixV,
mmB[1..mSize] := MatrixV[1..mSize]
OUTPUT
lMatrixYssV := linesOut,
cMatrixYssV:= columnsOut,
MatrixYssV[1..mSize] := mmOut[1..mSize]
ENDUSE
USE sumMatrices as sm2
INPUT
linesA := lMatrixYssV,
columnsA := cMatrixYssV,
mmA[1..mSize] := MatrixYssV[1..mSize]
linesB := lMatrixInsIn,
columnsB := cMatrixInsIn,
mmB[1..mSize] := MatrixInsIn[1..mSize]
OUTPUT
lMatrixIs := linesOut,
cMatrixIs:= columnsOut,
MatrixIs[1..mSize] := mmOut[1..mSize]
ENDUSE
ENDIF
ENDIF

106

Apndice A. Cdigo Fonte da biblioteca RLIB

107

662
ENDIF
663 ENDEXEC
664 ENDMODEL

Cdigo Fonte A.2 Mdulo da biblioteca RLib

A.3 Codigo de Reatores Naturalmente Saturados


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW novembro, sbado 7, 2015
C A Bonneville Power Administration program
C by H. K. Hidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
1.E-5
.05
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
MM0001 {v(XX0001)}
MM0002 {v(XX0002)}
OUTPUT
XX0002
MODEL RNS1
INPUT inpuV1
-- Tensao de Entrada V1
inpuV2
-- Tensao de Entrada V2
DATA arEnro
-- Area Enrolamento
arJugo
-- Area do Jugo
arReto
-- Area de Retorno
nuEspi
-- Numero de Espiras
compEr
-- Comprimento do Braco de Enrolamento
compJg
-- Comprimento do Braco do Jugo
compRt
-- Comprimento do Braco de Retorno
indDis
-- Indutancia de dispersao
VAR B[1..10]
-- Campo magnetico dos nove trechos
H[1..10]
-- Densidade magnetica para os nove trechos
BN[1..3]
-- Campo magnetico para o ramo principal, jugo e retorno
HN[1..3]
-- Densidade Magnetica para o ramo principal, jugo e retorno
BN1, BN2, BN3
-- Valores finais para campo magnetico para o ramo principal, jugo e retorno
HN1, HN2, HN3
-- Valores finais para densidade Magnetica para o ramo principal, jugo e retorno
l[1..9]
-- Indutancias para os nove trechos
lp[2..9]
-- Indutancias linhas (l) para os nove trechos
x, y
-- Variaveis intermediarias para facilitar o calculo de H e B
P1,P2,P3,P4
-- Permeancias do UMEC
O1,O2,O3,O4
-- Fluxos do UMEC (Ramo Principal, Jugo, Jugo e dispersao)
m2a,m2b,m2c,dm2
-- Variaveis intermediarias das matrizes
m311,m312,m321
-- Variaveis intermediarias das matrizes
m322,m511,m512
-- Variaveis intermediarias das matrizes
m11,y211,y311,y11 -- Variaveis intermediarias das matrizes
Ins1
-- Corrente da fonte de corrente do Equivalente de Norton
Iout
-- Corrente de saida
vl1
-- Tensao acumulada na entrada 1
vl2
-- Tensao acumulada na entrada 2
vl
-- Diferenca de vl1 - vl2
-- Essa parte corresponde as entidades da biblioteca RLib

Apndice A. Cdigo Fonte da biblioteca RLIB

108

50
m, dt, determnt, aux,
51
lMtrxA, cMtrxA, MtrxA[1..900]
52
lMtrxP, cMtrxP, MtrxP[1..900]
53
lMtrxN, cMtrxN, MtrxN[1..900]
54
lMtrxV, cMtrxV, MtrxV[1..900]
55
lMtrxO, cMtrxO, MtrxO[1..900]
56
lMtrxI, cMtrxI, MtrxI[1..900]
57
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
58
lMtrxIns, cMtrxIns, MtrxIns[1..900]
59
lMtrxIs, cMtrxIs, MtrxIs[1..900]
60 $INCLUDE ./RLib.m
61 OUTPUT Iout
62 INIT
63
BN1:=0.01, BN2:=0.01, BN3:=0.01 -- Inicializacao dos valores do campo magnetico
64
HN1:=0.01, HN2:=0.01, HN3:=0.01 -- Inicializacao dos valores da densidade magnetica
65
HN[1..3]:=0.01, BN[1..3]:=0.01 -- Inicializacao dos valores do campo magnetico e densidade magnetica
66
integral(inpuV1):=0
67
integral(inpuV2):=0
68
histdef(integral(inpuV1)):=0
69
histdef(integral(inpuV2)):=0
70
Ins1:=0
71
Iout:=0
72
m:=900
73
lMtrxP := 4,
74
cMtrxP := 4,
75
MtrxP[1..m]:=0
76 ENDINIT
77 EXEC
78
H[1]:=0
-- Definicao da curva BxH do material ferro magnetico
79
B[1]:=0
80
H[2]:=20.292
81
B[2]:=0.9
82
H[3]:=24.987
83
B[3]:=1.2
84
H[4]:=37.242
85
B[4]:=1.45
86
H[5]:=58.887
87
B[5]:=1.58
88
H[6]:=119.366
89
B[6]:=1.68
90
H[7]:=226.796
91
B[7]:=1.74
92
H[8]:=612.747
93
B[8]:=1.81
94
H[9]:=1193.662
95
B[9]:=1.86
96
H[10]:=10000
97
B[10]:=1.97
98
99
-- Metodo de aproximacao linear por trechos
100
-- Esse loop calcula a indutancia de cada trecho
101
FOR i:=1 TO 9 DO
102
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
103
ENDFOR
104
105
-- Metodo de aproximacao linear por trechos parte 2
106
-- Segundo loop para calcular o l para cada trecho
107
-- Utilizar Lp para criar indutores equivalentes que facam
108
-- o mesmo efeito na indutancia total.
109

109

Apndice A. Cdigo Fonte da biblioteca RLIB

110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169

FOR i:=2 TO 9 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
-- Calculo do campo magnetico no ramo principal
vl1:=integral(inpuV1)
vl2:=integral(inpuV2)
BN[1]:=(vl1-vl2)/(arEnro*nuEspi*(0.96))
IF BN[1]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[1]:=BN[1]/l[1]
FOR i:=2 TO 9 DO
IF BN[1]>B[i] THEN
HN[1]:=HN[1]+((BN[1]-B[i])/lp[i])
ENDIF
ENDFOR
ELSE
HN[1]:=BN[1]/l[1]
FOR i:=2 TO 9 DO
IF BN[1]<-B[i] THEN
HN[1]:=HN[1]+((BN[1]+B[i])/lp[i])
ENDIF
ENDFOR
ENDIF
P1:=(BN[1]/HN[1])*arEnro/compEr
O1:=BN[1]*arEnro
P4:=2*indDis/(nuEspi*nuEspi)
O4:=P4*(HN[1]*compEr+(O1/P1))
O3:=O1-O4
O2:=O3
BN[3]:=O3/arJugo
BN[2]:=O2/arReto

---------

Permeancia do ramo principal


Fluxo no ramo principal
Permeancia de dispersao
Fluxo de dispersao
Fluxo no Jugo
Fluxo no retorno
Campo magnetico no Jugo
Campo magnetigo de retorno

FOR i:=2 TO 3 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
P3:=(BN[3]/HN[3])*arJugo/compJg
P2:=(BN[2]/HN[2])*arReto/compRt
HN1:=HN[1]
BN1:=BN[1]
HN2:=HN[2]
BN2:=BN[2]
HN3:=HN[3]

Apndice A. Cdigo Fonte da biblioteca RLIB

170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229

BN3:=BN[3]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 4
cMtrxA := 2
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[1, -1]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[0, 1]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[-1, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[-1, 1]
lMtrxN := 1
cMtrxN := 1
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1] := nuEspi
lMtrxV := 1
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1] := (inpuV1-inpuV2)
lMtrxO := 1
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] := O1

lMtrxInsIn := 1
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1] := Ins1
dt := timestep
MtrxP[0*cMtrxP
MtrxP[1*cMtrxP
MtrxP[2*cMtrxP
MtrxP[3*cMtrxP

+
+
+
+

1]
2]
3]
4]

:=
:=
:=
:=

P1
P2
P3
P4

USE RNSMatrix as RNSM1


INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]

110

Apndice A. Cdigo Fonte da biblioteca RLIB

230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289

lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
Ins1 := MtrxIns[1]
Iout := MtrxIs[1]
ENDEXEC
ENDMODEL
RECORD
RNS1.HN1 AS HN1
RNS1.HN2 AS HN2
RNS1.HN3 AS HN3
RNS1.BN1 AS BN1
RNS1.BN2 AS BN2
RNS1.BN3 AS BN3
RNS1.P1 AS P1
RNS1.P2 AS P2
RNS1.P3 AS P3
RNS1.P4 AS P4
RNS1.O1 AS O1
RNS1.O2 AS O2
RNS1.O3 AS O3
RNS1.O4 AS O4
RNS1.m11 AS m11
RNS1.y11 AS y11
RNS1.inpuV1 AS inpuV1
RNS1.inpuV2 AS inpuV2
RNS1.vl AS vl
RNS1.Ins1 AS Ins1
RNS1.Iout AS Iout
RNS1.vl1 AS vl1
RNS1.vl2 AS vl2
USE RNS1 AS RNS1
INPUT
inpuV1:= MM0001
inpuV2:= MM0002
DATA
arEnro:=
0.454
arJugo:=
0.454
arReto:=
0.454
nuEspi:=
65.
compEr:=
3.59
compJg:=
2.66
compRt:=
3.59
indDis:=
0.0
OUTPUT
XX0002:=Iout
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH

111

112

Apndice A. Cdigo Fonte da biblioteca RLIB

290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306

C < n1 >< n2 ><ref1><ref2>< R >< L >< C


C < n1 >< n2 ><ref1><ref2>< R >< A >< B
XX0001
1.
XX0002
.001
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
14XX0001
2.2E4
60.
60XX0002-1
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

>
><Leng><><>0
0
1
A1

><

T1

>< TSTART >< TSTOP >


-1.
100.
1.E3

Cdigo Fonte A.3 Cdigo ATP para reator naturalmente saturado com 1 enrolamento sem
perdas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW abril, sexta-feira 12, 2013
C A Bonneville Power Administration program
C by H. K. Hidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
1.E-5
.05
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
MM0001 {v(XX0001)}
MM0002 {v(XX0002)}
OUTPUT
XX0002
MODEL RNS1
INPUT inpuV1
-- Tensao de Entrada V1
inpuV2
-- Tensao de Entrada V2
DATA arEnro
-- Area Enrolamento
arJugo
-- Area do Jugo
arReto
-- Area de Retorno
nuEspi
-- Numero de Espiras
compEr
-- Comprimento do Braco de Enrolamento
compJg
-- Comprimento do Braco do Jugo
compRt
-- Comprimento do Braco de Retorno
indDis
-- Indutancia de dispersao
VAR B[1..10]
-- Campo magnetico dos nove trechos
H[1..10]
-- Densidade magnetica para os nove trechos
BN[1..3]
-- Campo magnetico para o ramo principal, jugo e retorno
HN[1..3]
-- Densidade Magnetica para o ramo principal, jugo e retorno
BN1, BN2, BN3
-- Valores finais para campo magnetico para o ramo principal, jugo e retorno
HN1, HN2, HN3
-- Valores finais para densidade Magnetica para o ramo principal, jugo e retorno
l[1..9]
-- Indutancias para os nove trechos
lp[2..9]
-- Indutancias linhas (l) para os nove trechos
x, y
-- Variaveis intermediarias para facilitar o calculo de H e B
P1,P2,P3,P4
-- Permeancias do UMEC

Apndice A. Cdigo Fonte da biblioteca RLIB

113

39
O1,O2,O3,O4
-- Fluxos do UMEC (Ramo Principal, Jugo, Jugo e dispersao)
40
m2a,m2b,m2c,dm2
-- Variaveis intermediarias das matrizes
41
m311,m312,m321
-- Variaveis intermediarias das matrizes
42
m322,m511,m512
-- Variaveis intermediarias das matrizes
43
m11,y211,y311,y11 -- Variaveis intermediarias das matrizes
44
Ins1
-- Corrente da fonte de corrente do Equivalente de Norton
45
Iout
-- Corrente de saida
46
vl1
-- Tensao acumulada na entrada 1
47
vl2
-- Tensao acumulada na entrada 2
48
vl
-- Diferenca de vl1 - vl2
49
v1
-- Tensao de entrada no Reator = inpuV1 - ResistenciaInterna*Iout
50
m, dt, determnt, aux,
51
lMtrxA, cMtrxA, MtrxA[1..900]
52
lMtrxP, cMtrxP, MtrxP[1..900]
53
lMtrxN, cMtrxN, MtrxN[1..900]
54
lMtrxV, cMtrxV, MtrxV[1..900]
55
lMtrxO, cMtrxO, MtrxO[1..900]
56
lMtrxI, cMtrxI, MtrxI[1..900]
57
lMtrxIns, cMtrxIns, MtrxIns[1..900]
58
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
59
lMtrxIs, cMtrxIs, MtrxIs[1..900]
60 $INCLUDE ./RLib.m
61 OUTPUT Iout
62 INIT
63
BN1:=0.01, BN2:=0.01, BN3:=0.01 -- Inicializacao dos valores do campo magnetico
64
HN1:=0.01, HN2:=0.01, HN3:=0.01 -- Inicializacao dos valores da densidade magnetica
65
HN[1..3]:=0.01, BN[1..3]:=0.01 -- Inicializacao dos valores do campo magnetico e densidade magnetica
66
integral(v1):=0
67
integral(inpuV2):=0
68
histdef(integral(v1)):=0
69
histdef(integral(inpuV2)):=0
70
Ins1:=0
71
Iout:=0
72
v1:=0
73 ENDINIT
74 EXEC
75
H[1]:=0
-- Definicao da curva BxH do material ferro magnetico
76
B[1]:=0
77
H[2]:=20.292
78
B[2]:=0.9
79
H[3]:=24.987
80
B[3]:=1.2
81
H[4]:=37.242
82
B[4]:=1.45
83
H[5]:=58.887
84
B[5]:=1.58
85
H[6]:=119.366
86
B[6]:=1.68
87
H[7]:=226.796
88
B[7]:=1.74
89
H[8]:=612.747
90
B[8]:=1.81
91
H[9]:=1193.662
92
B[9]:=1.86
93
H[10]:=10000
94
B[10]:=1.97
95
96
-- Metodo de aproximacao linear por trechos
97
-- Esse loop calcula a indutancia de cada trecho
98
FOR i:=1 TO 9 DO

114

Apndice A. Cdigo Fonte da biblioteca RLIB

99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158

l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 9 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
-- Calculo do campo magnetico no ramo principal
v1:=inpuV1-0.17*Iout
vl1:=integral(v1)
vl2:=integral(inpuV2)
BN[1]:=(vl1-vl2)/(arEnro*nuEspi*(0.96))
IF BN[1]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[1]:=BN[1]/l[1]
FOR i:=2 TO 9 DO
IF BN[1]>B[i] THEN
HN[1]:=HN[1]+((BN[1]-B[i])/lp[i])
ENDIF
ENDFOR
ELSE
HN[1]:=BN[1]/l[1]
FOR i:=2 TO 9 DO
IF BN[1]<-B[i] THEN
HN[1]:=HN[1]+((BN[1]+B[i])/lp[i])
ENDIF
ENDFOR
ENDIF
P1:=(BN[1]/HN[1])*arEnro/compEr
O1:=BN[1]*arEnro
P4:=2*indDis/(nuEspi*nuEspi)
O4:=P4*(HN[1]*compEr+(O1/P1))
O3:=O1-O4
O2:=O3
BN[3]:=O3/arJugo
BN[2]:=O2/arReto

-- Permeancia do ramo principal


-- Fluxo no ramo principal
-- Permeancia de dispersao
-- Fluxo de dispersao
-- Fluxo no Jugo
-- Fluxo no retorno
-- Campo magnetico no Jugo
-- Campo magnetigo de retorno

FOR i:=2 TO 3 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR

Apndice A. Cdigo Fonte da biblioteca RLIB

159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218

P3:=(BN[3]/HN[3])*arJugo/compJg
P2:=(BN[2]/HN[2])*arReto/compRt
HN1:=HN[1]
BN1:=BN[1]
HN2:=HN[2]
BN2:=BN[2]
HN3:=HN[3]
BN3:=BN[3]
--Calculos das matrizes
m:=900
lMtrxA := 4
cMtrxA := 2
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
MtrxA[cMtrxA+1..2*cMtrxA]
MtrxA[2*cMtrxA+1..3*cMtrxA]
MtrxA[3*cMtrxA+1..4*cMtrxA]

:=[1, -1]
:=[0, 1]
:=[-1, 0]
:=[-1, 1]

lMtrxN := 1
cMtrxN := 1
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1] := nuEspi
lMtrxV := 1
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1] := (v1-inpuV2)
lMtrxO := 1
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] := O1

lMtrxInsIn := 1
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1] := Ins1
dt := timestep
lMtrxP := 4,
cMtrxP := 4,
MtrxP[1..m]:=0
MtrxP[0*cMtrxP
MtrxP[1*cMtrxP
MtrxP[2*cMtrxP
MtrxP[3*cMtrxP

+
+
+
+

1]
2]
3]
4]

:=
:=
:=
:=

P1
P2
P3
P4

USE RNSMatrix as RNSM1


INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,

115

Apndice A. Cdigo Fonte da biblioteca RLIB

219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278

cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
Ins1 := MtrxIns[1]
Iout := MtrxIs[1]
ENDEXEC
ENDMODEL
RECORD
RNS1.HN1 AS HN1
RNS1.HN2 AS HN2
RNS1.HN3 AS HN3
RNS1.BN1 AS BN1
RNS1.BN2 AS BN2
RNS1.BN3 AS BN3
RNS1.P1 AS P1
RNS1.P2 AS P2
RNS1.P3 AS P3
RNS1.P4 AS P4
RNS1.O1 AS O1
RNS1.O2 AS O2
RNS1.O3 AS O3
RNS1.O4 AS O4
RNS1.m11 AS m11
RNS1.y11 AS y11
RNS1.v1 AS v1
RNS1.inpuV1 AS inpuV1
RNS1.inpuV2 AS inpuV2
RNS1.vl AS vl
RNS1.Ins1 AS Ins1
RNS1.Iout AS Iout
RNS1.vl1 AS vl1
RNS1.vl2 AS vl2
USE RNS1 AS RNS1
INPUT
inpuV1:= MM0001
inpuV2:= MM0002
DATA
arEnro:=
0.454
arJugo:=
0.454
arReto:=
0.454

116

Apndice A. Cdigo Fonte da biblioteca RLIB

279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307

117

nuEspi:=
65.
compEr:=
3.59
compJg:=
2.66
compRt:=
3.59
indDis:= 1.236E-4
OUTPUT
XX0002:=Iout
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
XX0001
1.
0
XX0002
.001
1
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14XX0001
2.2E4
60.
-1.
100.
60XX0002-1
1.E3
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

Cdigo Fonte A.4 Cdigo ATP para reator naturalmente saturado com 1 enrolamento e perdas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW novembro, sabado 7, 2015
C A Bonneville Power Administration program
C by H. K. Hoidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
1.E-5
.05
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
MM0001 {v(XX0001)}
MM0002 {i(XX0003)}
OUTPUT
XX0002
MODEL RNS2
INPUT inputV
-- Tensao de Entrada
iCarga
-- Corrente na Carga
DATA arEnro
-- Area Enrolamento
arJugo
-- Area do Jugo
nuEsp1
-- Numero de Espiras enrolamento 1
nuEsp2
-- Numero de Espiras enrolamento 2
compEr
-- Comprimento do Braco de Enrolamento
compJg
-- Comprimento do Braco do Jugo
Ld1
-- Indutancia de dispersao no enrolamento 1
Ld2
-- Indutancia de dispersao no enrolamento 2

Apndice A. Cdigo Fonte da biblioteca RLIB

29
rFonte
-- Resistencia da fonte
30 VAR B[1..10]
-- Campo magnetico dos nove trechos
31
H[1..10]
-- Densidade magnetica para os nove trechos
32
HN[1..3]
33
BN[1..3]
34
HN1
35
BN1
36
HN2
37
BN2
38
BN3
39
HN3
40
l[1..9]
-- Indutancias para os nove trechos
41
lp[2..9]
-- Indutancias linhas (l) para os nove trechos
42
x, y, z, w, x1, y1
43
d1
44
d2
45
P1
46
P2
47
P3
48
P4
49
P5
50
O1
51
O2
52
O3
53
O4
54
O5
55
ins1
56
ins2
57
i1
58
i2
59
v2
60
dy1
61
vl1
62
vl2
63
io1
64
Zc
65
Xc
66
Pc
67
iLp
68
v2p
69
v1p
70
io1c
71
ZL
72
e2
73
e1
74
v1
75
m, dt, determnt, aux,
76
lMtrxA, cMtrxA, MtrxA[1..900]
77
lMtrxP, cMtrxP, MtrxP[1..900]
78
lMtrxN, cMtrxN, MtrxN[1..900]
79
lMtrxV, cMtrxV, MtrxV[1..900]
80
lMtrxO, cMtrxO, MtrxO[1..900]
81
lMtrxI, cMtrxI, MtrxI[1..900]
82
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
83
lMtrxIns, cMtrxIns, MtrxIns[1..900]
84
lMtrxIs, cMtrxIs, MtrxIs[1..900]
85 OUTPUT v2
86 $INCLUDE ./RLib.m
87 INIT
88
HN1:=0

118

Apndice A. Cdigo Fonte da biblioteca RLIB

89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148

BN1:=0
HN2:=0
BN2:=0
HN3:=0
BN3:=0
HN[1..3]:=0
BN[1..3]:=0
ins1:=0
ins2:=0
i1:=0
i2:=0.01
v2:=0.01
e2:=0
e1:=0
O2:=0
P2:=0.01
P3:=0.01
io1:=0
ZL:=0
v1:=0
integral(v1):=0
integral(v2):=0
histdef(integral(v1)):=0
histdef(integral(v2)):=0
iLp:=0.1
v2p:=0.1
v1p:=0.1
io1c:=0
Zc:=0
ENDINIT
EXEC
H[1]:=11.937
B[1]:=0.4
H[2]:=20.292
B[2]:=0.9
H[3]:=24.987
B[3]:=1.2
H[4]:=37.242
B[4]:=1.45
H[5]:=58.887
B[5]:=1.58
H[6]:=119.366
B[6]:=1.68
H[7]:=226.796
B[7]:=1.74
H[8]:=612.747
B[8]:=1.81
H[9]:=1193.662
B[9]:=1.86
H[10]:=10000
B[10]:=1.97
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 9 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-- Metodo de aproximacao linear por trechos parte 2
-- Segundo loop para calcular o l para cada trecho

119

120

Apndice A. Cdigo Fonte da biblioteca RLIB

149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208

-- Utilizar Lp para criar indutores equivalentes que facam


-- o mesmo efeito na indutancia total.
FOR i:=2 TO 9 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
d1:=arEnro*nuEsp1*(0.96)
d2:=arEnro*nuEsp2*(0.96)
P4:=Ld1/(nuEsp1*nuEsp1)
P5:=Ld2/(nuEsp2*nuEsp2)
v1:=inputV-rFonte*i1
v2:=(nuEsp2/nuEsp1)*v1
IF t=1e-5 THEN
v1p:=v1/cos(376.99*t)
ENDIF
IF t=1e-5 THEN
iLp:=iCarga/cos(376.99*t)
ENDIF
IF t=1e-5 THEN
v2p:=v2/cos(376.99*t)
ENDIF
ZL:=v2p/iLp
BN[1]:=integral(v1)
BN[1]:=BN[1]/d1
BN[2]:=integral(v2)
BN[2]:=BN[2]/d2
FOR i:=1 TO 2 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR

P1:=(BN[1]/HN[1])*arEnro/compEr
P2:=(BN[2]/HN[2])*arEnro/compEr
O1:=BN[1]*arEnro
O2:=BN[2]*arEnro
O4:=P4*(HN[1]*compEr+(O1/P1))
O5:=P5*(HN[2]*compEr+(O2/P2))
O3:=O1-O4
BN[3]:=O3/arJugo
IF BN[3]>=0 THEN
HN[3]:=BN[3]/l[1]

-- Calculo de H para os trechos do sistema

Apndice A. Cdigo Fonte da biblioteca RLIB

209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268

FOR i:=2 TO 9 DO
IF BN[3]>B[i] THEN
HN[3]:=HN[3]+((BN[3]-B[i])/lp[i])
ENDIF
ENDFOR
ELSE
HN[3]:=BN[3]/l[1]
FOR i:=2 TO 9 DO
IF BN[3]<-B[i] THEN
HN[3]:=HN[3]+((BN[3]+B[i])/lp[i])
ENDIF
ENDFOR
ENDIF
IF HN[3] <> 0 THEN
P3:=(BN[3]/HN[3])*arJugo/compJg
e2:=i2*ZL
e1:=v1
HN1:=HN[1]
BN1:=BN[1]
HN2:=HN[2]
BN2:=BN[2]
HN3:=HN[3]
BN3:=BN[3]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 5
cMtrxA := 2
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[1, -1]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[0, 1]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[-1, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[-1, 1]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[0, -1]
lMtrxN := 2
cMtrxN := 2
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1] := nuEsp1
MtrxN[1*cMtrxN+2] := nuEsp2
lMtrxV := 2
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1] := (e1)
MtrxV[1*cMtrxV+1] := (e2)
lMtrxO := 2
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] := O1
MtrxO[1*cMtrxO+1] := O2
lMtrxInsIn := 2
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1] := Ins1

121

Apndice A. Cdigo Fonte da biblioteca RLIB

122

269
MtrxInsIn[1*cMtrxInsIn+1] := Ins2
270
271
dt := timestep
272
273
lMtrxP := 5,
274
cMtrxP := 5,
275
MtrxP[1..m]:=0
276
MtrxP[(1-1)*cMtrxP + 1] := P1
277
MtrxP[(2-1)*cMtrxP + 2] := P2
278
MtrxP[(3-1)*cMtrxP + 3] := P3
279
MtrxP[(4-1)*cMtrxP + 4] := P4
280
MtrxP[(5-1)*cMtrxP + 5] := P5
281
282
USE RNSMatrix as RNSM1
283
INPUT
284
deltaTime := dt,
285
286
lMatrixA := lMtrxA,
287
cMatrixA := cMtrxA,
288
MatrixA[1..m] := MtrxA[1..m]
289
290
lMP := lMtrxP,
291
cMP := cMtrxP,
292
MP[1..900]:= MtrxP[1..m]
293
294
lMatrixN := lMtrxN,
295
cMatrixN := cMtrxN,
296
MatrixN[1..m] := MtrxN[1..m]
297
298
lMatrixV := lMtrxV,
299
cMatrixV := cMtrxV,
300
MatrixV[1..m] := MtrxV[1..m]
301
302
lMatrixO := lMtrxO,
303
cMatrixO := cMtrxO,
304
MatrixO[1..m] := MtrxO[1..m]
305
306
lMatrixInsIn := lMtrxInsIn,
307
cMatrixInsIn := cMtrxInsIn,
308
MatrixInsIn[1..m] := MtrxInsIn[1..m]
309
OUTPUT
310
MtrxIns[1..m] := MatrixIns[1..m],
311
MtrxIs[1..m] := MatrixIs[1..m]
312
ENDUSE
313
Ins1 := MtrxIns[1]
314
Ins2 := MtrxIns[2]
315
i1 := MtrxIs[1]
316
i2 := MtrxIs[2]
317
318
x:=((1/P1)*((1/P3)+(1/P4)+(1/P5))+((1/P4)*((1/P3)+(1/P5))))
319
Pc:=1/(x/((1/P3)+(1/P4)+(1/P5)))
320
Xc:=376.99*nuEsp1*nuEsp1*Pc
321
Zc:=Xc/2
-- Zc corresponde a impedancia do transformador
322
i1:=(i1+(v1p/Zc))*sin(376.99*t)
323
i2:= i2 + i1*(nuEsp1/nuEsp2)
324
325
ENDIF
326
ENDEXEC
327 ENDMODEL
328 RECORD

Apndice A. Cdigo Fonte da biblioteca RLIB

329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388

RNS2.HN1 AS HN1
RNS2.HN2 AS HN2
RNS2.HN3 AS HN3
RNS2.BN1 AS BN1
RNS2.BN2 AS BN2
RNS2.BN3 AS BN3
RNS2.INS1 AS INS1
RNS2.INS2 AS INS2
RNS2.P1 AS P1
RNS2.P2 AS P2
RNS2.P3 AS P3
RNS2.P4 AS P4
RNS2.P5 AS P5
RNS2.O1 AS O1
RNS2.O2 AS O2
RNS2.O3 AS O3
RNS2.O4 AS O4
RNS2.O5 AS O5
RNS2.v1 AS v1
RNS2.v2 AS v2
RNS2.e2 AS e2
RNS2.e1 AS e1
RNS2.vl1 AS vl1
RNS2.vl2 AS vl2
RNS2.i1 AS i1
RNS2.i2 AS i2
RNS2.io1 AS io1
RNS2.io1c AS io1c
RNS2.iCarga AS iCarga
RNS2.ZL AS ZL
RNS2.Zc AS Zc
USE RNS2 AS RNS2
INPUT
inputV:= MM0001
iCarga:= MM0002
DATA
arEnro:=
0.454
arJugo:=
0.454
nuEsp1:=
65.
nuEsp2:=
450.
compEr:=
3.59
compJg:=
2.66
Ld1:= 2.472E-4
Ld2:= 0.011846
rFonte:=
0.008
OUTPUT
XX0002:=v2
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
XX0001
.01
0
XX0002XX0003
.0075
3
/SWITCH
C < n 1>< n 2>< Tclose ><Top/Tde ><
Ie
><Vf/CLOP >< type >
XX0003
-1.
1.E3
1
/SOURCE

123

124

Apndice A. Cdigo Fonte da biblioteca RLIB

389
390
391
392
393
394
395
396
397
398
399
400

C < n 1><>< Ampl. >< Freq. ><Phase/T0><


14XX0001
1600.
60.
60XX0002 0
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

A1

><

T1

>< TSTART >< TSTOP >


-1.
100.
1.E3

Cdigo Fonte A.5 Cdigo ATP para reator naturalmente saturado com 2 enrolamentos em
curto e sem perdas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW novembro, sabado 7, 2015
C A Bonneville Power Administration program
C by H. K. Hidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
1.E-5
.05
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
MM0001 {v(XX0001)}
MM0002 {i(XX0003)}
OUTPUT
XX0002
MODEL RNS2
INPUT inputV
-- Tensao de Entrada
iCarga
-- Corrente na Carga
DATA arEnro
-- Area Enrolamento
arJugo
-- Area do Jugo
nuEsp1
-- Numero de Espiras enrolamento 1
nuEsp2
-- Numero de Espiras enrolamento 2
compEr
-- Comprimento do Braco de Enrolamento
compJg
-- Comprimento do Braco do Jugo
Ld1
-- Indutancia de dispersao no enrolamento 1
Ld2
-- Indutancia de dispersao no enrolamento 2
rFonte
-- Resistencia da fonte
VAR B[1..10]
-- Campo magnetico dos nove trechos
H[1..10]
-- Densidade magnetica para os nove trechos
HN[1..3]
BN[1..3]
HN1
BN1
HN2
BN2
BN3
HN3
l[1..9]
-- Indutancias para os nove trechos
lp[2..9]
-- Indutancias linhas (l) para os nove trechos
x, y, z, w, x1, y1
d1

Apndice A. Cdigo Fonte da biblioteca RLIB

44
d2
45
P1
46
P2
47
P3
48
P4
49
P5
50
O1
51
O2
52
O3
53
O4
54
O5
55
ins1
56
ins2
57
i1
58
i2
59
v2
60
dy1
61
vl1
62
vl2
63
io1
64
Zc
65
Xc
66
Pc
67
iLp
68
v2p
69
v1p
70
io1c
71
ZL
72
e2
73
e1
74
v1
75
m, dt, determnt, aux,
76
lMtrxA, cMtrxA, MtrxA[1..900]
77
lMtrxP, cMtrxP, MtrxP[1..900]
78
lMtrxN, cMtrxN, MtrxN[1..900]
79
lMtrxV, cMtrxV, MtrxV[1..900]
80
lMtrxO, cMtrxO, MtrxO[1..900]
81
lMtrxI, cMtrxI, MtrxI[1..900]
82
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
83
lMtrxIns, cMtrxIns, MtrxIns[1..900]
84
lMtrxIs, cMtrxIs, MtrxIs[1..900]
85 OUTPUT v2
86 $INCLUDE ./RLib.m
87 INIT
88
HN1:=0
89
BN1:=0
90
HN2:=0
91
BN2:=0
92
HN3:=0
93
BN3:=0
94
HN[1..3]:=0
95
BN[1..3]:=0
96
ins1:=0
97
ins2:=0
98
i1:=0
99
i2:=0.01
100
v2:=0.01
101
e2:=0
102
e1:=0
103
O2:=0

125

Apndice A. Cdigo Fonte da biblioteca RLIB

104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

P2:=0.01
P3:=0.01
io1:=0
ZL:=0
v1:=0
integral(v1):=0
integral(v2):=0
histdef(integral(v1)):=0
histdef(integral(v2)):=0
iLp:=0.1
v2p:=0.1
v1p:=0.1
io1c:=0
Zc:=0
ENDINIT
EXEC
H[1]:=11.937
B[1]:=0.4
H[2]:=20.292
B[2]:=0.9
H[3]:=24.987
B[3]:=1.2
H[4]:=37.242
B[4]:=1.45
H[5]:=58.887
B[5]:=1.58
H[6]:=119.366
B[6]:=1.68
H[7]:=226.796
B[7]:=1.74
H[8]:=612.747
B[8]:=1.81
H[9]:=1193.662
B[9]:=1.86
H[10]:=10000
B[10]:=1.97
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 9 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 9 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
d1:=arEnro*nuEsp1*(0.96)
d2:=arEnro*nuEsp2*(0.96)
P4:=Ld1/(nuEsp1*nuEsp1)
P5:=Ld2/(nuEsp2*nuEsp2)
v1:=inputV-rFonte*i1
v2:=(nuEsp2/nuEsp1)*v1
IF t=1e-5 THEN

126

Apndice A. Cdigo Fonte da biblioteca RLIB

164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223

v1p:=v1/cos(377*t)
ENDIF
IF t=1e-5 THEN
iLp:=iCarga/cos(377*t)
ENDIF
IF t=1e-5 THEN
v2p:=v2/cos(377*t)
ENDIF
ZL:=v2p/iLp
BN[1]:=integral(v1)
BN[1]:=BN[1]/d1
BN[2]:=integral(v2)
BN[2]:=BN[2]/d2
FOR i:=1 TO 2 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR

P1:=(BN[1]/HN[1])*arEnro/compEr
P2:=(BN[2]/HN[2])*arEnro/compEr
O1:=BN[1]*arEnro
O2:=BN[2]*arEnro
O4:=P4*(HN[1]*compEr+(O1/P1))
O5:=P5*(HN[2]*compEr+(O2/P2))
O3:=O1-O4
BN[3]:=O3/arJugo
IF BN[3]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[3]:=BN[3]/l[1]
FOR i:=2 TO 9 DO
IF BN[3]>B[i] THEN
HN[3]:=HN[3]+((BN[3]-B[i])/lp[i])
ENDIF
ENDFOR
ELSE
HN[3]:=BN[3]/l[1]
FOR i:=2 TO 9 DO
IF BN[3]<-B[i] THEN
HN[3]:=HN[3]+((BN[3]+B[i])/lp[i])
ENDIF
ENDFOR
ENDIF
IF HN[3] < 0 OR HN[3] > 0 THEN

127

Apndice A. Cdigo Fonte da biblioteca RLIB

224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283

P3:=(BN[3]/HN[3])*arJugo/compJg
HN1:=HN[1]
BN1:=BN[1]
HN2:=HN[2]
BN2:=BN[2]
HN3:=HN[3]
BN3:=BN[3]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 5
cMtrxA := 2
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[1, -1]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[0, 1]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[-1, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[-1, 1]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[0, -1]
lMtrxN := 2
cMtrxN := 2
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1] := nuEsp1
MtrxN[1*cMtrxN+2] := nuEsp2
lMtrxV := 2
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1] := (e1)
MtrxV[1*cMtrxV+1] := (e2)
lMtrxO := 2
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] := O1
MtrxO[1*cMtrxO+1] := O2
lMtrxInsIn := 2
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1] := Ins1
MtrxInsIn[1*cMtrxInsIn+1] := Ins2
dt := timestep
lMtrxP := 5,
cMtrxP := 5,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP
MtrxP[(2-1)*cMtrxP
MtrxP[(3-1)*cMtrxP
MtrxP[(4-1)*cMtrxP
MtrxP[(5-1)*cMtrxP

+
+
+
+
+

1]
2]
3]
4]
5]

USE RNSMatrix as RNSM1


INPUT
deltaTime := dt,
lMatrixA := lMtrxA,

:=
:=
:=
:=
:=

P1
P2
P3
P4
P5

128

Apndice A. Cdigo Fonte da biblioteca RLIB

284
cMatrixA := cMtrxA,
285
MatrixA[1..m] := MtrxA[1..m]
286
287
lMP := lMtrxP,
288
cMP := cMtrxP,
289
MP[1..900]:= MtrxP[1..m]
290
291
lMatrixN := lMtrxN,
292
cMatrixN := cMtrxN,
293
MatrixN[1..m] := MtrxN[1..m]
294
295
lMatrixV := lMtrxV,
296
cMatrixV := cMtrxV,
297
MatrixV[1..m] := MtrxV[1..m]
298
299
lMatrixO := lMtrxO,
300
cMatrixO := cMtrxO,
301
MatrixO[1..m] := MtrxO[1..m]
302
303
lMatrixInsIn := lMtrxInsIn,
304
cMatrixInsIn := cMtrxInsIn,
305
MatrixInsIn[1..m] := MtrxInsIn[1..m]
306
OUTPUT
307
MtrxIns[1..m] := MatrixIns[1..m],
308
MtrxIs[1..m] := MatrixIs[1..m]
309
ENDUSE
310
Ins1 := MtrxIns[1]
311
Ins2 := MtrxIns[2]
312
i1 := MtrxIs[1]
313
i2 := MtrxIs[2]
314
315
i1 := i1 + (iCarga*nuEsp2/nuEsp1)
316
i2:= i2 + iCarga
317
318
ENDIF
319
ENDEXEC
320 ENDMODEL
321 RECORD
322
RNS2.HN1 AS HN1
323
RNS2.HN2 AS HN2
324
RNS2.HN3 AS HN3
325
RNS2.BN1 AS BN1
326
RNS2.BN2 AS BN2
327
RNS2.BN3 AS BN3
328
RNS2.INS1 AS INS1
329
RNS2.INS2 AS INS2
330
RNS2.P1 AS P1
331
RNS2.P2 AS P2
332
RNS2.P3 AS P3
333
RNS2.P4 AS P4
334
RNS2.P5 AS P5
335
RNS2.O1 AS O1
336
RNS2.O2 AS O2
337
RNS2.O3 AS O3
338
RNS2.O4 AS O4
339
RNS2.O5 AS O5
340
RNS2.v1 AS v1
341
RNS2.v2 AS v2
342
RNS2.e2 AS e2
343
RNS2.e1 AS e1

129

Apndice A. Cdigo Fonte da biblioteca RLIB

344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393

130

RNS2.vl1 AS vl1
RNS2.vl2 AS vl2
RNS2.i1 AS i1
RNS2.i2 AS i2
RNS2.io1 AS io1
RNS2.io1c AS io1c
RNS2.iCarga AS iCarga
RNS2.ZL AS ZL
RNS2.Zc AS Zc
USE RNS2 AS RNS2
INPUT
inputV:= MM0001
iCarga:= MM0002
DATA
arEnro:=
0.454
arJugo:=
0.454
nuEsp1:=
65.
nuEsp2:=
450.
compEr:=
3.59
compJg:=
2.66
Ld1:= 2.472E-4
Ld2:= 0.011846
rFonte:=
0.008
OUTPUT
XX0002:=v2
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
XX0001
.01
0
XX0002XX0003
64.5
3
/SWITCH
C < n 1>< n 2>< Tclose ><Top/Tde ><
Ie
><Vf/CLOP >< type >
XX0003
-1.
1.E3
1
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14XX0001
1.6E4
60.
-1.
100.
60XX0002 0
1.E3
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

Cdigo Fonte A.6 Cdigo ATP para reator naturalmente saturado com 2 enrolamentos com
plena carga e sem perdas
1
2
3
4
5

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW novembro, sabado 7, 2015
C A Bonneville Power Administration program
C by H. K. Hidalen at SEfAS/NTNU - NORWAY 1994-2009

Apndice A. Cdigo Fonte da biblioteca RLIB

6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65

C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
1.E-5
.05
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
MM0001 {v(XX0001)}
MM0002 {i(XX0003)}
OUTPUT
XX0002
MODEL RNS2
INPUT inputV
-- Tensao de Entrada
iCarga
-- Corrente na Carga
DATA arEnro
-- Area Enrolamento
arJugo
-- Area do Jugo
nuEsp1
-- Numero de Espiras enrolamento 1
nuEsp2
-- Numero de Espiras enrolamento 2
compEr
-- Comprimento do Braco de Enrolamento
compJg
-- Comprimento do Braco do Jugo
Ld1
-- Indutancia de dispersao no enrolamento 1
Ld2
-- Indutancia de dispersao no enrolamento 2
rFonte
-- Resistencia da fonte
VAR B[1..10]
-- Campo magnetico dos nove trechos
H[1..10]
-- Densidade magnetica para os nove trechos
HN[1..3]
BN[1..3]
HN1
BN1
HN2
BN2
BN3
HN3
l[1..9]
-- Indutancias para os nove trechos
lp[2..9]
-- Indutancias linhas (l) para os nove trechos
x, y, z, w, x1, y1
d1
d2
P1
P2
P3
P4
P5
O1
O2
O3
O4
O5
ins1
ins2
i1
i2
v2
dy1
vl1
vl2
io1
Zc
Xc

131

Apndice A. Cdigo Fonte da biblioteca RLIB

66
Pc
67
iLp
68
v2p
69
v1p
70
io1c
71
ZL
72
e2
73
e1
74
v1
75
m, dt, determnt, aux,
76
lMtrxA, cMtrxA, MtrxA[1..900]
77
lMtrxP, cMtrxP, MtrxP[1..900]
78
lMtrxN, cMtrxN, MtrxN[1..900]
79
lMtrxV, cMtrxV, MtrxV[1..900]
80
lMtrxO, cMtrxO, MtrxO[1..900]
81
lMtrxI, cMtrxI, MtrxI[1..900]
82
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
83
lMtrxIns, cMtrxIns, MtrxIns[1..900]
84
lMtrxIs, cMtrxIs, MtrxIs[1..900]
85 OUTPUT v2
86 $INCLUDE ./RLib.m
87 INIT
88
HN1:=0
89
BN1:=0
90
HN2:=0
91
BN2:=0
92
HN3:=0
93
BN3:=0
94
HN[1..3]:=0
95
BN[1..3]:=0
96
ins1:=0
97
ins2:=0
98
i1:=0
99
i2:=0.01
100
v2:=0.01
101
e2:=0
102
e1:=0
103
O2:=0
104
P2:=0.01
105
P3:=0.01
106
io1:=0
107
ZL:=0
108
v1:=0
109
integral(v1):=0
110
integral(v2):=0
111
histdef(integral(v1)):=0
112
histdef(integral(v2)):=0
113
iLp:=0.1
114
v2p:=0.1
115
v1p:=0.1
116
io1c:=0
117
Zc:=0
118 ENDINIT
119 EXEC
120
H[1]:=11.937
121
B[1]:=0.4
122
H[2]:=20.292
123
B[2]:=0.9
124
H[3]:=24.987
125
B[3]:=1.2

132

Apndice A. Cdigo Fonte da biblioteca RLIB

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185

H[4]:=37.242
B[4]:=1.45
H[5]:=58.887
B[5]:=1.58
H[6]:=119.366
B[6]:=1.68
H[7]:=226.796
B[7]:=1.74
H[8]:=612.747
B[8]:=1.81
H[9]:=1193.662
B[9]:=1.86
H[10]:=10000
B[10]:=1.97
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 9 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 9 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
d1:=arEnro*nuEsp1*(0.96)
d2:=arEnro*nuEsp2*(0.96)
P4:=Ld1/(nuEsp1*nuEsp1)
P5:=Ld2/(nuEsp2*nuEsp2)
v1:=inputV-rFonte*i1
v2:=(nuEsp2/nuEsp1)*v1
IF t=1e-5 THEN
v1p:=v1/cos(376.99*t)
ENDIF
IF t=1e-5 THEN
iLp:=iCarga/cos(376.99*t)
ENDIF
IF t=1e-5 THEN
v2p:=v2/cos(376.99*t)
ENDIF
ZL:=v2p/iLp
BN[1]:=integral(v1)
BN[1]:=BN[1]/d1
BN[2]:=integral(v2)
BN[2]:=BN[2]/d2
FOR i:=1 TO 2 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF

133

Apndice A. Cdigo Fonte da biblioteca RLIB

186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245

ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 9 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR

P1:=(BN[1]/HN[1])*arEnro/compEr
P2:=(BN[2]/HN[2])*arEnro/compEr
O1:=BN[1]*arEnro
O2:=BN[2]*arEnro
O4:=P4*(HN[1]*compEr+(O1/P1))
O5:=P5*(HN[2]*compEr+(O2/P2))
O3:=O1-O4
BN[3]:=O3/arJugo
IF BN[3]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[3]:=BN[3]/l[1]
FOR i:=2 TO 9 DO
IF BN[3]>B[i] THEN
HN[3]:=HN[3]+((BN[3]-B[i])/lp[i])
ENDIF
ENDFOR
ELSE
HN[3]:=BN[3]/l[1]
FOR i:=2 TO 9 DO
IF BN[3]<-B[i] THEN
HN[3]:=HN[3]+((BN[3]+B[i])/lp[i])
ENDIF
ENDFOR
ENDIF
IF HN[3] < 0 OR HN[3] > 0 THEN
P3:=(BN[3]/HN[3])*arJugo/compJg
HN1:=HN[1]
BN1:=BN[1]
HN2:=HN[2]
BN2:=BN[2]
HN3:=HN[3]
BN3:=BN[3]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 5
cMtrxA := 2
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[1, -1]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[0, 1]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[-1, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[-1, 1]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[0, -1]
lMtrxN := 2
cMtrxN := 2
MtrxN[1..m]:=0

134

Apndice A. Cdigo Fonte da biblioteca RLIB

246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305

MtrxN[0*cMtrxN+1] := nuEsp1
MtrxN[1*cMtrxN+2] := nuEsp2
lMtrxV := 2
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1] := (v1)
MtrxV[1*cMtrxV+1] := (v2)
lMtrxO := 2
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] := O1
MtrxO[1*cMtrxO+1] := O2
lMtrxInsIn := 2
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1] := Ins1
MtrxInsIn[1*cMtrxInsIn+1] := Ins2
dt := timestep
lMtrxP := 5,
cMtrxP := 5,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP
MtrxP[(2-1)*cMtrxP
MtrxP[(3-1)*cMtrxP
MtrxP[(4-1)*cMtrxP
MtrxP[(5-1)*cMtrxP

+
+
+
+
+

1]
2]
3]
4]
5]

:=
:=
:=
:=
:=

P1
P2
P3
P4
P5

USE RNSMatrix as RNSM1


INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT

135

Apndice A. Cdigo Fonte da biblioteca RLIB

306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365

MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
Ins1 := MtrxIns[1]
Ins2 := MtrxIns[2]
i1 := MtrxIs[1]
i2 := MtrxIs[2]
ENDIF
ENDEXEC
ENDMODEL
RECORD
RNS2.HN1 AS HN1
RNS2.HN2 AS HN2
RNS2.HN3 AS HN3
RNS2.BN1 AS BN1
RNS2.BN2 AS BN2
RNS2.BN3 AS BN3
RNS2.INS1 AS INS1
RNS2.INS2 AS INS2
RNS2.P1 AS P1
RNS2.P2 AS P2
RNS2.P3 AS P3
RNS2.P4 AS P4
RNS2.P5 AS P5
RNS2.O1 AS O1
RNS2.O2 AS O2
RNS2.O3 AS O3
RNS2.O4 AS O4
RNS2.O5 AS O5
RNS2.v1 AS v1
RNS2.v2 AS v2
RNS2.e2 AS e2
RNS2.e1 AS e1
RNS2.vl1 AS vl1
RNS2.vl2 AS vl2
RNS2.i1 AS i1
RNS2.i2 AS i2
RNS2.io1 AS io1
RNS2.io1c AS io1c
RNS2.iCarga AS iCarga
RNS2.ZL AS ZL
RNS2.Zc AS Zc
USE RNS2 AS RNS2
INPUT
inputV:= MM0001
iCarga:= MM0002
DATA
arEnro:=
0.454
arJugo:=
0.454
nuEsp1:=
65.
nuEsp2:=
450.
compEr:=
3.59
compJg:=
2.66
Ld1:= 2.472E-4
Ld2:= 0.011846
rFonte:=
0.107
OUTPUT
XX0002:=v2
ENDUSE

136

137

Apndice A. Cdigo Fonte da biblioteca RLIB

366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389

ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
XX0001
.01
0
XX0002XX0003
1.E6
3
/SWITCH
C < n 1>< n 2>< Tclose ><Top/Tde ><
Ie
><Vf/CLOP >< type >
XX0003
-1.
1.E3
1
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14XX0001
1.6E4
60.
-1.
100.
60XX0002 0
1.E3
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

Cdigo Fonte A.7 Cdigo ATP para reator naturalmente saturado com 2 enrolamentos em
vazio e sem perdas
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW dezembro, quinta-feira 3, 2015
C A Bonneville Power Administration program
C by H. K. Hoidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
5.E-6
.05
60.
1.E-180
500
1
1
1
1
0
0
/MODELS
MODELS
INPUT
M0001A {v(X0002A)}
M0001B {v(X0002B)}
M0001C {v(X0002C)}
OUTPUT
X0001A
X0001B
X0001C
MODEL RNS6Yd
INPUT v[1..3]
DATA Aw
Ay
Ar
N0
N3
Lw1
Lw2
Ly
Lr

Apndice A. Cdigo Fonte da biblioteca RLIB

32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91

Ld0
Ld3
VAR B[1..48]
-- Campo magnetico dos nove trechos
H[1..48]
-- Densidade magnetica para os nove trechos
HN[1..12]
BN[1..12]
HN1,HN2,HN3,HN4,HN5,HN6,HN7,HN8,HN9,HN10,HN11,HN12
BN1,BN2,BN3,BN4,BN5,BN6,BN7,BN8,BN9,BN10,BN11,BN12
l[1..47]
-- Indutancias para os nove trechos
lp[2..47]
-- Indutancias linhas (l) para os nove trechos
x
y
d1
d2
d3
d4
d5
d6
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
P16
P17
P18
O1
O2
O3
O4
O5
O6
O7
O8
O9
O10
O11
O12
O13
O14
O15
O16
O17
O18
a1[1..6]
a2[1..6]
a3[1..6]
a4[1..6]
a5[1..6]
a6[1..6]

138

Apndice A. Cdigo Fonte da biblioteca RLIB

92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151

f1[1..6]
f2[1..6]
f3[1..6]
f4[1..6]
f5[1..6]
f6[1..6]
j1[1..7]
j2[1..7]
j3[1..7]
j4[1..7]
j5[1..7]
j6[1..7]
j7[1..7]
u1[1..6]
u2[1..6]
u3[1..6]
u4[1..6]
u5[1..6]
u6[1..6]
ra1[1..7]
ra2[1..7]
ra3[1..7]
ra4[1..7]
ra5[1..7]
ra6[1..7]
ra7[1..7]
g1[1..6]
g2[1..6]
g3[1..6]
g4[1..6]
g5[1..6]
g6[1..6]
m1[1..6]
m2[1..6]
m3[1..6]
m4[1..6]
m5[1..6]
m6[1..6]
q11
q22
q33
q44
q55
q66
ins1
ins2
ins3
ins4
ins5
ins6
i1A
i2A
i1B
i2B
i1C
i2C
i1[1..3]
i2[1..3]
v1A
v2A

139

Apndice A. Cdigo Fonte da biblioteca RLIB

152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211

v1B
v2B
v1C
v2C
v1[1..3]
v2[1..3]
v11p
v12p
v13p
v21p
v22p
v23p
v1p
v2p
v3p
iL1p
iL2p
iL3p
ZL1
ZL2
ZL3
io1A
io2A
io1B
io2B
io1C
io2C
e2[1..3]
Pc1
Pc2
Pc3
Xc1
Xc2
Xc3
Zc1
Zc2
Zc3
x1
x2
y1
y2
e11
e21
e22
e23
e1[1..3]
e12[1..3]
ip
e121
Zc
vn
in
j71
j72
j73
j74
j75
j76
j77
xla

140

Apndice A. Cdigo Fonte da biblioteca RLIB

212
xlb
213
xlc
214
z
215
m, dt, determnt, aux,
216
lMtrxA, cMtrxA, MtrxA[1..900]
217
lMtrxP, cMtrxP, MtrxP[1..900]
218
lMtrxN, cMtrxN, MtrxN[1..900]
219
lMtrxV, cMtrxV, MtrxV[1..900]
220
lMtrxO, cMtrxO, MtrxO[1..900]
221
lMtrxI, cMtrxI, MtrxI[1..900]
222
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
223
lMtrxIns, cMtrxIns, MtrxIns[1..900]
224
lMtrxIs, cMtrxIs, MtrxIs[1..900]
225 OUTPUT v2[1..3]
226 $INCLUDE ./RLib.m
227 INIT
228
HN1:=0
229
BN1:=0
230
BN3:=0
231
HN3:=0
232
BN5:=0
233
HN5:=0
234
BN7:=0
235
HN7:=0
236
BN8:=0
237
HN8:=0
238
HN[1..12]:=0
239
BN[1..12]:=0
240
ins1:=0.01
241
ins2:=0.01
242
ins3:=0.01
243
ins4:=0.01
244
ins5:=0.01
245
ins6:=0.01
246
i1[1..3]:=0.01
247
i2[1..3]:=0.01
248
v2[1..3]:=0.01
249
i1A:=0.01
250
i2A:=0.01
251
i1B:=0.01
252
i2B:=0.01
253
i1C:=0.01
254
i2C:=0.01
255
v1A:=0.01
256
v2A:=0.01
257
v1B:=0.01
258
v2B:=0.01
259
v1C:=0.01
260
v2C:=0.01
261
e21:=0.01
262
e22:=0.01
263
e23:=0.01
264
v1[1..3]:=0.01
265
P1:=0.01
266
P2:=0.01
267
P3:=0.01
268
P4:=0.01
269
P5:=0.01
270
P6:=0.01
271
P13:=0.01

141

Apndice A. Cdigo Fonte da biblioteca RLIB

272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331

P14:=0.01
P15:=0.01
P16:=0.01
P17:=0.01
P18:=0.01
m1[1..6]:=0
m2[1..6]:=0
m3[1..6]:=0
m4[1..6]:=0
m5[1..6]:=0
m6[1..6]:=0
j1[1..7]:=0.01
j2[1..7]:=0.01
j3[1..7]:=0.01
j4[1..7]:=0.01
j5[1..7]:=0.01
j6[1..7]:=0.01
j7[1..7]:=0.01
v1p:=0
v2p:=0
v3p:=0
v11p:=0
v12p:=0
v13p:=0
iL1p:=0
iL2p:=0
iL3p:=0
v21p:=0
v22p:=0
v23p:=0
io1A:=0
io2A:=0
io1B:=0
io2B:=0
io1C:=0
io2C:=0
q11:=0.01
q22:=0.01
q33:=0.01
q44:=0.01
q55:=0.01
q66:=0.01
in:=0
vn:=0
xla:=0
xlb:=0
xlc:=0
ENDINIT
EXEC
H[1]:=11.937
B[1]:=0.4
H[2]:=13.608
B[2]:=0.499999
H[3]:=15.358
B[3]:=0.599998
H[4]:=17.109
B[4]:=0.699997
H[5]:=18.701
B[5]:=0.799995
H[6]:=20.292

142

Apndice A. Cdigo Fonte da biblioteca RLIB

332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391

B[6]:=0.899994
H[7]:=21.168
B[7]:=0.999992
H[8]:=21.884
B[8]:=1.049991
H[9]:=22.839
B[9]:=1.099991
H[10]:=23.635
B[10]:=1.14999
H[11]:=24.987
B[11]:=1.19999
H[12]:=26.42
B[12]:=1.24999
H[13]:=28.17
B[13]:=1.29999
H[14]:=30.637
B[14]:=1.349991
H[15]:=33.025
B[15]:=1.399992
H[16]:=37.242
B[16]:=1.449995
H[17]:=42.972
B[17]:=1.499998
H[18]:=45.757
B[18]:=1.52
H[19]:=48.94
B[19]:=1.540003
H[20]:=53.317
B[20]:=1.560006
H[21]:=58.887
B[21]:=1.580011
H[22]:=66.049
B[22]:=1.600016
H[23]:=76.394
B[23]:=1.620025
H[24]:=85.944
B[24]:=1.640033
H[25]:=103.451
B[25]:=1.660048
H[26]:=119.366
B[26]:=1.680062
H[27]:=147.218
B[27]:=1.700087
H[28]:=163.134
B[28]:=1.710101
H[29]:=179.049
B[29]:=1.720115
H[30]:=202.923
B[30]:=1.730136
H[31]:=226.796
B[31]:=1.740157
H[32]:=259.423
B[32]:=1.750186
H[33]:=282.5
B[33]:=1.760207
H[34]:=334.225
B[34]:=1.770253
H[35]:=377.993
B[35]:=1.780292
H[36]:=445.634

143

Apndice A. Cdigo Fonte da biblioteca RLIB

392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451

B[36]:=1.790352
H[37]:=501.338
B[37]:=1.800402
H[38]:=612.747
B[38]:=1.810502
H[39]:=700.282
B[39]:=1.82058
H[40]:=835.564
B[40]:=1.830701
H[41]:=954.93
B[41]:=1.840808
H[42]:=1114.085
B[42]:=1.850951
H[43]:=1193.662
B[43]:=1.861022
H[44]:=1392.606
B[44]:=1.871201
H[45]:=1591.549
B[45]:=1.881379
H[46]:=2500
B[46]:=1.922194
H[47]:=5000
B[47]:=1.964438
H[48]:=10000
B[48]:=1.978929
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 47 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 47 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
d1:=Aw*N0*0.96
d2:=Aw*N3*0.96
d3:=Aw*N0*0.96
d4:=Aw*N3*0.96
d5:=Aw*N0*0.96
d6:=Aw*N3*0.96
P7:=Ld0/(N0*N0)
P8:=Ld3/(N3*N3)
P9:=Ld0/(N0*N0)
P10:=Ld3/(N3*N3)
P11:=Ld0/(N0*N0)
P12:=Ld3/(N3*N3)
IF t=5e-5 THEN
v1p:=v[1]/cos(377*t)
v2p:=v[2]/cos(377*t-2.094)
v3p:=v[3]/cos(377*t+2.094)
ENDIF
v1[1]:=v[1]
v1[2]:=v[2]

144

Apndice A. Cdigo Fonte da biblioteca RLIB

452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511

v1[3]:=v[3]
IF t=5e-5 THEN
v11p:=v1[1]/cos(377*t)
v12p:=v1[2]/cos(377*t-2.094)
v13p:=v1[3]/cos(377*t+2.094)
ENDIF
v2[1]:=(v11p*N3/(N0))*cos(377*t+0.524)
v2[2]:=(v12p*N3/(N0))*cos(377*t-1.57)
v2[3]:=(v13p*N3/(N0))*cos(377*t+2.62)
v21p:=v11p*N3/(N0)
v22p:=v12p*N3/(N0)
v23p:=v13p*N3/(N0)
BN[1]:=((v11p/377)*sin(377*t))/d1
BN[2]:=BN[1]
BN[3]:=((v12p/377)*sin(377*t-2.094))/d3
BN[4]:=BN[3]
BN[5]:=((v13p/377)*sin(377*t+2.094))/d5
BN[6]:=BN[5]
FOR i:=1 TO 6 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
P1:=(BN[1]/HN[1])*Aw/(Lw1)
P2:=(BN[2]/HN[1])*Aw/(Lw2)
P3:=(BN[3]/HN[3])*Aw/(Lw1)
P4:=(BN[4]/HN[3])*Aw/(Lw2)
P5:=(BN[5]/HN[5])*Aw/(Lw1)
P6:=(BN[6]/HN[5])*Aw/(Lw2)
O1:=BN[1]*Aw*0.96
O2:=BN[2]*Aw*0.96
O3:=BN[3]*Aw*0.96
O4:=BN[4]*Aw*0.96
O5:=BN[5]*Aw*0.96
O6:=BN[6]*Aw*0.96
O7:=P7*((HN[1]*Lw1)+(O1/P1))
O8:=P8*((HN[1]*Lw2)+(O2/P2))
O9:=P9*((HN[3]*Lw1)+(O3/P3))
O10:=P10*((HN[3]*Lw2)+(O4/P4))
O11:=P11*((HN[5]*Lw1)+(O5/P5))
O12:=P12*((HN[5]*Lw2)+(O6/P6))
O15:=(O1+O7)/2
O16:=(O1+O7)/2
O13:=O15
O17:=(O5+O11)/2

145

Apndice A. Cdigo Fonte da biblioteca RLIB

512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571

O18:=(O5+O11)/2
O14:=O18
BN[7]:=O13/(Ar*0.96)
BN[8]:=O14/(Ar*0.96)
BN[9]:=O15/(Ay*0.96)
BN[10]:=O16/(Ay*0.96)
BN[11]:=O17/(Ay*0.96)
BN[12]:=O18/(Ay*0.96)
FOR i:=7 TO 8 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
P13:=(BN[7]/HN[7])*Ar/Lr
P14:=(BN[8]/HN[8])*Ar/Lr
P15:=(BN[7]/HN[7])*Ay/Ly
P16:=(BN[7]/HN[7])*Ay/Ly
P17:=(BN[8]/HN[8])*Ay/Ly
P18:=(BN[8]/HN[8])*Ay/Ly
BN1:=BN[1]
BN2:=BN[2]
BN3:=BN[3]
BN4:=BN[4]
BN5:=BN[5]
BN6:=BN[6]
HN1:=HN[1]
HN2:=HN[2]
HN3:=HN[3]
HN4:=HN[4]
HN5:=HN[5]
HN6:=HN[6]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 18
cMtrxA := 6
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[ 1,-1, 0, 0, 0, 0]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[ 0, 1, 0, 0, 0, 0]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[ 0, 0, 1,-1, 0, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[ 0, 0, 0, 1, 0, 0]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[ 0, 0, 0, 0, 1,-1]
MtrxA[5*cMtrxA+1..6*cMtrxA]
:=[ 0, 0, 0, 0, 0, 1]
MtrxA[6*cMtrxA+1..7*cMtrxA]
:=[-1, 1, 0, 0, 0, 0]
MtrxA[7*cMtrxA+1..8*cMtrxA]
:=[ 0,-1, 0, 0, 0, 0]
MtrxA[8*cMtrxA+1..9*cMtrxA]
:=[ 0, 0,-1, 1, 0, 0]

146

147

Apndice A. Cdigo Fonte da biblioteca RLIB

572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631

MtrxA[9*cMtrxA+1..10*cMtrxA]
MtrxA[10*cMtrxA+1..11*cMtrxA]
MtrxA[11*cMtrxA+1..12*cMtrxA]
MtrxA[12*cMtrxA+1..13*cMtrxA]
MtrxA[13*cMtrxA+1..14*cMtrxA]
MtrxA[14*cMtrxA+1..15*cMtrxA]
MtrxA[15*cMtrxA+1..16*cMtrxA]
MtrxA[16*cMtrxA+1..17*cMtrxA]
MtrxA[17*cMtrxA+1..18*cMtrxA]
lMtrxN := 6
cMtrxN := 6
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1]
MtrxN[1*cMtrxN+2]
MtrxN[2*cMtrxN+3]
MtrxN[3*cMtrxN+4]
MtrxN[4*cMtrxN+5]
MtrxN[5*cMtrxN+6]

:=
:=
:=
:=
:=
:=

N0
N3
N0
N3
N0
N3

lMtrxV := 6
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1]
MtrxV[1*cMtrxV+1]
MtrxV[2*cMtrxV+1]
MtrxV[3*cMtrxV+1]
MtrxV[4*cMtrxV+1]
MtrxV[5*cMtrxV+1]

:=
:=
:=
:=
:=
:=

v1[1]
v1[2]
v1[3]
v2[1]
v2[2]
v2[3]

lMtrxO := 6
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1]
MtrxO[1*cMtrxO+1]
MtrxO[2*cMtrxO+1]
MtrxO[3*cMtrxO+1]
MtrxO[4*cMtrxO+1]
MtrxO[5*cMtrxO+1]

:=
:=
:=
:=
:=
:=

O1
O2
O3
O4
O5
O6

lMtrxInsIn := 6
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1]
MtrxInsIn[1*cMtrxInsIn+1]
MtrxInsIn[2*cMtrxInsIn+1]
MtrxInsIn[3*cMtrxInsIn+1]
MtrxInsIn[4*cMtrxInsIn+1]
MtrxInsIn[5*cMtrxInsIn+1]

:=
:=
:=
:=
:=
:=

ins1
ins2
ins3
ins4
ins5
ins6

dt := timestep
lMtrxP := 18,
cMtrxP := 18,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP
MtrxP[(2-1)*cMtrxP
MtrxP[(3-1)*cMtrxP
MtrxP[(4-1)*cMtrxP

+
+
+
+

1]
2]
3]
4]

:=
:=
:=
:=

:=[ 0,
:=[ 0,
:=[ 0,
:=[ 0,
:=[ 0,
:=[-1,
:=[-1,
:=[ 0,
:=[ 0,

P1
P2
P3
P4

0,
0,
0,
0,
0,
0,
0,
0,
0,

0,-1, 0, 0]
0, 0,-1, 1]
0, 0, 0,-1]
0, 0, 0, 0]
0, 0, 0, 0]
0, 0, 0, 0]
1, 0, 0, 0]
1, 0,-1, 0]
0, 0,-1, 0]

Apndice A. Cdigo Fonte da biblioteca RLIB

632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691

MtrxP[(5-1)*cMtrxP + 5] := P5
MtrxP[(6-1)*cMtrxP + 6] := P6
MtrxP[(7-1)*cMtrxP + 7] := P7
MtrxP[(8-1)*cMtrxP + 8] := P8
MtrxP[(9-1)*cMtrxP + 9] := P9
MtrxP[(10-1)*cMtrxP + 10] := P10
MtrxP[(11-1)*cMtrxP + 11] := P11
MtrxP[(12-1)*cMtrxP + 12] := P12
MtrxP[(13-1)*cMtrxP + 13] := P13
MtrxP[(14-1)*cMtrxP + 14] := P14
MtrxP[(15-1)*cMtrxP + 15] := P15
MtrxP[(16-1)*cMtrxP + 16] := P16
MtrxP[(17-1)*cMtrxP + 17] := P17
MtrxP[(18-1)*cMtrxP + 18] := P18
USE RNSMatrix as RNSM1
INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
ins1 := MtrxIns[1]
ins2 := MtrxIns[2]
ins3 := MtrxIns[3]
ins4 := MtrxIns[4]
ins5 := MtrxIns[5]
ins6 := MtrxIns[6]
i1[1]
i2[1]
i1[2]
i2[2]
i1[3]
i2[3]

:=
:=
:=
:=
:=
:=

MtrxIs[1]
MtrxIs[2]
MtrxIs[3]
MtrxIs[4]
MtrxIs[5]
MtrxIs[6]

148

Apndice A. Cdigo Fonte da biblioteca RLIB

692
i1A:=i1[1] -(i1[2]/2)-(i1[3]/2)
693
i2A:=i2[1]
694
i1B:=i1[2] -(i1[1]/2)-(i1[3]/2)
695
i2B:=i2[2]
696
i1C:=i1[3] -(i1[2]/2)-(i1[1]/2)
697
i2C:=i2[3]
698
v1A:=v1[1]
699
v2A:=v2[1]
700
v1B:=v1[2]
701
v2B:=v2[2]
702
v1C:=v1[3]
703
v2C:=v2[3]
704
705
ENDEXEC
706 ENDMODEL
707 RECORD
708
RNS6Yd.HN1 AS HN1
709
RNS6Yd.BN1 AS BN1
710
RNS6Yd.HN3 AS HN3
711
RNS6Yd.BN3 AS BN3
712
RNS6Yd.HN5 AS HN5
713
RNS6Yd.BN5 AS BN5
714
RNS6Yd.HN7 AS HN7
715
RNS6Yd.BN7 AS BN7
716
RNS6Yd.HN8 AS HN8
717
RNS6Yd.BN8 AS BN8
718
RNS6Yd.BN9 AS BN9
719
RNS6Yd.HN9 AS HN9
720
RNS6Yd.BN10 AS BN10
721
RNS6Yd.HN10 AS HN10
722
RNS6Yd.BN11 AS BN11
723
RNS6Yd.HN11 AS HN11
724
RNS6Yd.BN12 AS BN12
725
RNS6Yd.HN12 AS HN12
726
RNS6Yd.i1A AS i1A
727
RNS6Yd.i2A AS i2A
728
RNS6Yd.i1B AS i1B
729
RNS6Yd.i2B AS i2B
730
RNS6Yd.i1C AS i1C
731
RNS6Yd.i2C AS i2C
732
RNS6Yd.ins1 AS ins1
733
RNS6Yd.ins2 AS ins2
734
RNS6Yd.ins3 AS ins3
735
RNS6Yd.ins4 AS ins4
736
RNS6Yd.ins5 AS ins5
737
RNS6Yd.ins6 AS ins6
738
RNS6Yd.v1A AS v1A
739
RNS6Yd.v2A AS v2A
740
RNS6Yd.v1B AS v1B
741
RNS6Yd.v2B AS v2B
742
RNS6Yd.v1C AS v1C
743
RNS6Yd.v2C AS v2C
744
RNS6Yd.io1A AS io1A
745
RNS6Yd.io2A AS io2A
746
RNS6Yd.io1B As io1B
747
RNS6Yd.io2B As io2B
748
RNS6Yd.io1C AS io1C
749
RNS6Yd.io2C AS io2C
750
RNS6Yd.v1p AS v1p
751
RNS6Yd.v2p AS v2p

149

Apndice A. Cdigo Fonte da biblioteca RLIB

752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811

RNS6Yd.v3p AS v3p
RNS6Yd.v11p AS v11p
RNS6Yd.v12p AS v12p
RNS6Yd.v13p AS v13p
RNS6Yd.v21p AS v21p
RNS6Yd.v22p AS v22p
RNS6Yd.v23p AS v23p
RNS6Yd.vn AS vn
RNS6Yd.in AS in
RNS6Yd.xla AS xla
RNS6Yd.xlb AS xlb
RNS6Yd.xlc AS xlc
RNS6Yd.O1 AS O1
RNS6Yd.O2 AS O2
RNS6Yd.O3 AS O3
RNS6Yd.O4 AS O4
RNS6Yd.O5 AS O5
RNS6Yd.O6 AS O6
RNS6Yd.O7 AS O7
RNS6Yd.O8 AS O8
RNS6Yd.O9 AS O9
RNS6Yd.O10 AS O10
RNS6Yd.O11 AS O11
RNS6Yd.O12 AS O12
RNS6Yd.O13 AS O13
RNS6Yd.O14 AS O14
RNS6Yd.O15 AS O15
RNS6Yd.O16 AS O16
RNS6Yd.O17 AS O17
RNS6Yd.O18 AS O18
USE RNS6Yd AS RNS6Yd
INPUT
v[1]:= M0001A
v[2]:= M0001B
v[3]:= M0001C
DATA
Aw:=
0.0158
Ay:=
0.0158
Ar:=
0.0158
N0:=
195.
N3:=
98.
Lw1:=
0.39
Lw2:=
0.27
Ly:=
0.3608
Lr:=
0.8
Ld0:= 3.88E-4
Ld3:= 0.00678
OUTPUT
X0001A:=v2[1]
X0001B:=v2[2]
X0001C:=v2[3]
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
X0002A
.001
0
X0002B
.001
0

150

151

Apndice A. Cdigo Fonte da biblioteca RLIB

812
813
814
815
816
817
818
819
820
821
822
823
824
825
826

X0002C
.001
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
14X0002A 0
2449.5
60.
14X0002B 0
2449.5
60.
-120.
14X0002C 0
2449.5
60.
120.
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

0
A1

><

T1

>< TSTART >< TSTOP >


-1.
1.E3
-1.
1.E3
-1.
1.E3

Cdigo Fonte A.8 Cdigo ATP para reator naturalmente saturado com 6 enrolamentos
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW dezembro, quinta-feira 3, 2015
C A Bonneville Power Administration program
C by H. K. Hoidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
5.E-6
.05
60.
1.E-180
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
M0001A {v(X0002A)}
M0001B {v(X0002B)}
M0001C {v(X0002C)}
OUTPUT
X0001A
X0001B
X0001C
MODEL RNS6Yd
INPUT v[1..3]
DATA Aw
Ay
Ar
N0
N3
Lw1
Lw2
Ly
Lr
Ld0
Ld3
VAR B[1..48]
-- Campo magnetico dos nove trechos
H[1..48]
-- Densidade magnetica para os nove trechos
HN[1..12]
BN[1..12]
HN1,HN2,HN3,HN4,HN5,HN6,HN7,HN8,HN9,HN10,HN11,HN12
BN1,BN2,BN3,BN4,BN5,BN6,BN7,BN8,BN9,BN10,BN11,BN12
l[1..47]
-- Indutancias para os nove trechos
lp[2..47]
-- Indutancias linhas (l) para os nove trechos
x

Apndice A. Cdigo Fonte da biblioteca RLIB

43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102

y
d1
d2
d3
d4
d5
d6
P1
P2
P3
P4
P5
P6
P7
P8
P9
P10
P11
P12
P13
P14
P15
P16
P17
P18
O1
O2
O3
O4
O5
O6
O7
O8
O9
O10
O11
O12
O13
O14
O15
O16
O17
O18
a1[1..6]
a2[1..6]
a3[1..6]
a4[1..6]
a5[1..6]
a6[1..6]
f1[1..6]
f2[1..6]
f3[1..6]
f4[1..6]
f5[1..6]
f6[1..6]
j1[1..7]
j2[1..7]
j3[1..7]
j4[1..7]
j5[1..7]

152

Apndice A. Cdigo Fonte da biblioteca RLIB

103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162

j6[1..7]
j7[1..7]
u1[1..6]
u2[1..6]
u3[1..6]
u4[1..6]
u5[1..6]
u6[1..6]
ra1[1..7]
ra2[1..7]
ra3[1..7]
ra4[1..7]
ra5[1..7]
ra6[1..7]
ra7[1..7]
g1[1..6]
g2[1..6]
g3[1..6]
g4[1..6]
g5[1..6]
g6[1..6]
m1[1..6]
m2[1..6]
m3[1..6]
m4[1..6]
m5[1..6]
m6[1..6]
q11
q22
q33
q44
q55
q66
ins1
ins2
ins3
ins4
ins5
ins6
i1A
i2A
i1B
i2B
i1C
i2C
i1[1..3]
i2[1..3]
v1A
v2A
v1B
v2B
v1C
v2C
v1[1..3]
v2[1..3]
v11p
v12p
v13p
v21p
v22p

153

Apndice A. Cdigo Fonte da biblioteca RLIB

163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222

v23p
v1p
v2p
v3p
iL1p
iL2p
iL3p
ZL1
ZL2
ZL3
io1A
io2A
io1B
io2B
io1C
io2C
e2[1..3]
Pc1
Pc2
Pc3
Xc1
Xc2
Xc3
Zc1
Zc2
Zc3
x1
x2
y1
y2
e11
e21
e22
e23
e1[1..3]
e12[1..3]
ip
e121
Zc
vn
in
j71
j72
j73
j74
j75
j76
j77
xla
xlb
xlc
z
m, dt, determnt, aux,
lMtrxA, cMtrxA, MtrxA[1..900]
lMtrxP, cMtrxP, MtrxP[1..900]
lMtrxN, cMtrxN, MtrxN[1..900]
lMtrxV, cMtrxV, MtrxV[1..900]
lMtrxO, cMtrxO, MtrxO[1..900]
lMtrxI, cMtrxI, MtrxI[1..900]
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]

154

Apndice A. Cdigo Fonte da biblioteca RLIB

223
lMtrxIns, cMtrxIns, MtrxIns[1..900]
224
lMtrxIs, cMtrxIs, MtrxIs[1..900]
225
Hc -- for hysteresis
226 OUTPUT v2[1..3]
227 $INCLUDE ./RLib.m
228 INIT
229
HN1:=0
230
BN1:=0
231
BN3:=0
232
HN3:=0
233
BN5:=0
234
HN5:=0
235
BN7:=0
236
HN7:=0
237
BN8:=0
238
HN8:=0
239
HN[1..12]:=0
240
BN[1..12]:=0
241
ins1:=0.01
242
ins2:=0.01
243
ins3:=0.01
244
ins4:=0.01
245
ins5:=0.01
246
ins6:=0.01
247
i1[1..3]:=0.01
248
i2[1..3]:=0.01
249
v2[1..3]:=0.01
250
i1A:=0.01
251
i2A:=0.01
252
i1B:=0.01
253
i2B:=0.01
254
i1C:=0.01
255
i2C:=0.01
256
v1A:=0.01
257
v2A:=0.01
258
v1B:=0.01
259
v2B:=0.01
260
v1C:=0.01
261
v2C:=0.01
262
e21:=0.01
263
e22:=0.01
264
e23:=0.01
265
v1[1..3]:=0.01
266
P1:=0.01
267
P2:=0.01
268
P3:=0.01
269
P4:=0.01
270
P5:=0.01
271
P6:=0.01
272
P13:=0.01
273
P14:=0.01
274
P15:=0.01
275
P16:=0.01
276
P17:=0.01
277
P18:=0.01
278
m1[1..6]:=0
279
m2[1..6]:=0
280
m3[1..6]:=0
281
m4[1..6]:=0
282
m5[1..6]:=0

155

Apndice A. Cdigo Fonte da biblioteca RLIB

283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342

m6[1..6]:=0
j1[1..7]:=0.01
j2[1..7]:=0.01
j3[1..7]:=0.01
j4[1..7]:=0.01
j5[1..7]:=0.01
j6[1..7]:=0.01
j7[1..7]:=0.01
v1p:=0
v2p:=0
v3p:=0
v11p:=0
v12p:=0
v13p:=0
iL1p:=0
iL2p:=0
iL3p:=0
v21p:=0
v22p:=0
v23p:=0
io1A:=0
io2A:=0
io1B:=0
io2B:=0
io1C:=0
io2C:=0
q11:=0.01
q22:=0.01
q33:=0.01
q44:=0.01
q55:=0.01
q66:=0.01
in:=0
vn:=0
xla:=0
xlb:=0
xlc:=0
ENDINIT
EXEC
Hc:=53.133
H[1]:=11.937
B[1]:=0.4
H[2]:=13.608
B[2]:=0.499999
H[3]:=15.358
B[3]:=0.599998
H[4]:=17.109
B[4]:=0.699997
H[5]:=18.701
B[5]:=0.799995
H[6]:=20.292
B[6]:=0.899994
H[7]:=21.168
B[7]:=0.999992
H[8]:=21.884
B[8]:=1.049991
H[9]:=22.839
B[9]:=1.099991
H[10]:=23.635
B[10]:=1.14999

156

Apndice A. Cdigo Fonte da biblioteca RLIB

343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402

H[11]:=24.987
B[11]:=1.19999
H[12]:=26.42
B[12]:=1.24999
H[13]:=28.17
B[13]:=1.29999
H[14]:=30.637
B[14]:=1.349991
H[15]:=33.025
B[15]:=1.399992
H[16]:=37.242
B[16]:=1.449995
H[17]:=42.972
B[17]:=1.499998
H[18]:=45.757
B[18]:=1.52
H[19]:=48.94
B[19]:=1.540003
H[20]:=53.317
B[20]:=1.560006
H[21]:=58.887
B[21]:=1.580011
H[22]:=66.049
B[22]:=1.600016
H[23]:=76.394
B[23]:=1.620025
H[24]:=85.944
B[24]:=1.640033
H[25]:=103.451
B[25]:=1.660048
H[26]:=119.366
B[26]:=1.680062
H[27]:=147.218
B[27]:=1.700087
H[28]:=163.134
B[28]:=1.710101
H[29]:=179.049
B[29]:=1.720115
H[30]:=202.923
B[30]:=1.730136
H[31]:=226.796
B[31]:=1.740157
H[32]:=259.423
B[32]:=1.750186
H[33]:=282.5
B[33]:=1.760207
H[34]:=334.225
B[34]:=1.770253
H[35]:=377.993
B[35]:=1.780292
H[36]:=445.634
B[36]:=1.790352
H[37]:=501.338
B[37]:=1.800402
H[38]:=612.747
B[38]:=1.810502
H[39]:=700.282
B[39]:=1.82058
H[40]:=835.564
B[40]:=1.830701

157

Apndice A. Cdigo Fonte da biblioteca RLIB

403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462

H[41]:=954.93
B[41]:=1.840808
H[42]:=1114.085
B[42]:=1.850951
H[43]:=1193.662
B[43]:=1.861022
H[44]:=1392.606
B[44]:=1.871201
H[45]:=1591.549
B[45]:=1.881379
H[46]:=2500
B[46]:=1.922194
H[47]:=5000
B[47]:=1.964438
H[48]:=10000
B[48]:=1.978929
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 47 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutncia total.

FOR i:=2 TO 47 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
d1:=Aw*N0*0.96
d2:=Aw*N3*0.96
d3:=Aw*N0*0.96
d4:=Aw*N3*0.96
d5:=Aw*N0*0.96
d6:=Aw*N3*0.96
P7:=Ld0/(N0*N0)
P8:=Ld3/(N3*N3)
P9:=Ld0/(N0*N0)
P10:=Ld3/(N3*N3)
P11:=Ld0/(N0*N0)
P12:=Ld3/(N3*N3)
IF t=5e-5 THEN
v1p:=v[1]/cos(377*t)
v2p:=v[2]/cos(377*t-2.094)
v3p:=v[3]/cos(377*t+2.094)
ENDIF
v1[1]:=v[1]
v1[2]:=v[2]
v1[3]:=v[3]
IF t=5e-5 THEN
v11p:=v1[1]/cos(377*t)
v12p:=v1[2]/cos(377*t-2.094)
v13p:=v1[3]/cos(377*t+2.094)
ENDIF
v2[1]:=(v11p*N3/(N0))*cos(377*t+0.524)
v2[2]:=(v12p*N3/(N0))*cos(377*t-1.57)
v2[3]:=(v13p*N3/(N0))*cos(377*t+2.62)

158

Apndice A. Cdigo Fonte da biblioteca RLIB

463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522

v21p:=v11p*N3/(N0)
v22p:=v12p*N3/(N0)
v23p:=v13p*N3/(N0)
BN[1]:=((v11p/377)*sin(377*t))/d1
BN[2]:=BN[1]
BN[3]:=((v12p/377)*sin(377*t-2.094))/d3
BN[4]:=BN[3]
BN[5]:=((v13p/377)*sin(377*t+2.094))/d5
BN[6]:=BN[5]
FOR i:=1 TO 6 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
IF v[1]<0 THEN
HN[i]:=HN[i]-Hc
ELSE
HN[i]:=HN[i]+Hc
ENDIF
ENDFOR
P1:=(BN[1]/HN[1])*Aw/(Lw1)
P2:=(BN[2]/HN[1])*Aw/(Lw2)
P3:=(BN[3]/HN[3])*Aw/(Lw1)
P4:=(BN[4]/HN[3])*Aw/(Lw2)
P5:=(BN[5]/HN[5])*Aw/(Lw1)
P6:=(BN[6]/HN[5])*Aw/(Lw2)
O1:=BN[1]*Aw*0.96
O2:=BN[2]*Aw*0.96
O3:=BN[3]*Aw*0.96
O4:=BN[4]*Aw*0.96
O5:=BN[5]*Aw*0.96
O6:=BN[6]*Aw*0.96
O7:=P7*((HN[1]*Lw1)+(O1/P1))
O8:=P8*((HN[1]*Lw2)+(O2/P2))
O9:=P9*((HN[3]*Lw1)+(O3/P3))
O10:=P10*((HN[3]*Lw2)+(O4/P4))
O11:=P11*((HN[5]*Lw1)+(O5/P5))
O12:=P12*((HN[5]*Lw2)+(O6/P6))
O15:=(O1+O7)/2
O16:=(O1+O7)/2
O13:=O15
O17:=(O5+O11)/2
O18:=(O5+O11)/2
O14:=O18
BN[7]:=O13/(Ar*0.96)
BN[8]:=O14/(Ar*0.96)

159

Apndice A. Cdigo Fonte da biblioteca RLIB

523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582

BN[9]:=O15/(Ay*0.96)
BN[10]:=O16/(Ay*0.96)
BN[11]:=O17/(Ay*0.96)
BN[12]:=O18/(Ay*0.96)
FOR i:=7 TO 8 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
P13:=(BN[7]/HN[7])*Ar/Lr
P14:=(BN[8]/HN[8])*Ar/Lr
P15:=(BN[7]/HN[7])*Ay/Ly
P16:=(BN[7]/HN[7])*Ay/Ly
P17:=(BN[8]/HN[8])*Ay/Ly
P18:=(BN[8]/HN[8])*Ay/Ly
BN1:=BN[1]
BN2:=BN[2]
BN3:=BN[3]
BN4:=BN[4]
BN5:=BN[5]
BN6:=BN[6]
HN1:=HN[1]
HN2:=HN[2]
HN3:=HN[3]
HN4:=HN[4]
HN5:=HN[5]
HN6:=HN[6]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 18
cMtrxA := 6
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[ 1,-1, 0, 0, 0, 0]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[ 0, 1, 0, 0, 0, 0]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[ 0, 0, 1,-1, 0, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[ 0, 0, 0, 1, 0, 0]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[ 0, 0, 0, 0, 1,-1]
MtrxA[5*cMtrxA+1..6*cMtrxA]
:=[ 0, 0, 0, 0, 0, 1]
MtrxA[6*cMtrxA+1..7*cMtrxA]
:=[-1, 1, 0, 0, 0, 0]
MtrxA[7*cMtrxA+1..8*cMtrxA]
:=[ 0,-1, 0, 0, 0, 0]
MtrxA[8*cMtrxA+1..9*cMtrxA]
:=[ 0, 0,-1, 1, 0, 0]
MtrxA[9*cMtrxA+1..10*cMtrxA] :=[ 0, 0, 0,-1, 0, 0]
MtrxA[10*cMtrxA+1..11*cMtrxA] :=[ 0, 0, 0, 0,-1, 1]
MtrxA[11*cMtrxA+1..12*cMtrxA] :=[ 0, 0, 0, 0, 0,-1]
MtrxA[12*cMtrxA+1..13*cMtrxA] :=[ 0, 0, 0, 0, 0, 0]

160

161

Apndice A. Cdigo Fonte da biblioteca RLIB

583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642

MtrxA[13*cMtrxA+1..14*cMtrxA]
MtrxA[14*cMtrxA+1..15*cMtrxA]
MtrxA[15*cMtrxA+1..16*cMtrxA]
MtrxA[16*cMtrxA+1..17*cMtrxA]
MtrxA[17*cMtrxA+1..18*cMtrxA]
lMtrxN := 6
cMtrxN := 6
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1]
MtrxN[1*cMtrxN+2]
MtrxN[2*cMtrxN+3]
MtrxN[3*cMtrxN+4]
MtrxN[4*cMtrxN+5]
MtrxN[5*cMtrxN+6]

:=
:=
:=
:=
:=
:=

N0
N3
N0
N3
N0
N3

lMtrxV := 6
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1]
MtrxV[1*cMtrxV+1]
MtrxV[2*cMtrxV+1]
MtrxV[3*cMtrxV+1]
MtrxV[4*cMtrxV+1]
MtrxV[5*cMtrxV+1]

:=
:=
:=
:=
:=
:=

v1[1]
v1[2]
v1[3]
v2[1]
v2[2]
v2[3]

lMtrxO := 6
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1]
MtrxO[1*cMtrxO+1]
MtrxO[2*cMtrxO+1]
MtrxO[3*cMtrxO+1]
MtrxO[4*cMtrxO+1]
MtrxO[5*cMtrxO+1]

:=
:=
:=
:=
:=
:=

O1
O2
O3
O4
O5
O6

lMtrxInsIn := 6
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1]
MtrxInsIn[1*cMtrxInsIn+1]
MtrxInsIn[2*cMtrxInsIn+1]
MtrxInsIn[3*cMtrxInsIn+1]
MtrxInsIn[4*cMtrxInsIn+1]
MtrxInsIn[5*cMtrxInsIn+1]

:=
:=
:=
:=
:=
:=

ins1
ins2
ins3
ins4
ins5
ins6

dt := timestep
lMtrxP := 18,
cMtrxP := 18,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP
MtrxP[(2-1)*cMtrxP
MtrxP[(3-1)*cMtrxP
MtrxP[(4-1)*cMtrxP
MtrxP[(5-1)*cMtrxP
MtrxP[(6-1)*cMtrxP
MtrxP[(7-1)*cMtrxP
MtrxP[(8-1)*cMtrxP

+
+
+
+
+
+
+
+

1]
2]
3]
4]
5]
6]
7]
8]

:=
:=
:=
:=
:=
:=
:=
:=

:=[ 0,
:=[-1,
:=[-1,
:=[ 0,
:=[ 0,

P1
P2
P3
P4
P5
P6
P7
P8

0,
0,
0,
0,
0,

0,
0,
1,
1,
0,

0, 0,
0, 0,
0, 0,
0,-1,
0,-1,

0]
0]
0]
0]
0]

Apndice A. Cdigo Fonte da biblioteca RLIB

643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702

MtrxP[(9-1)*cMtrxP + 9] := P9
MtrxP[(10-1)*cMtrxP + 10] := P10
MtrxP[(11-1)*cMtrxP + 11] := P11
MtrxP[(12-1)*cMtrxP + 12] := P12
MtrxP[(13-1)*cMtrxP + 13] := P13
MtrxP[(14-1)*cMtrxP + 14] := P14
MtrxP[(15-1)*cMtrxP + 15] := P15
MtrxP[(16-1)*cMtrxP + 16] := P16
MtrxP[(17-1)*cMtrxP + 17] := P17
MtrxP[(18-1)*cMtrxP + 18] := P18
USE RNSMatrix as RNSM1
INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
ins1 := MtrxIns[1]
ins2 := MtrxIns[2]
ins3 := MtrxIns[3]
ins4 := MtrxIns[4]
ins5 := MtrxIns[5]
ins6 := MtrxIns[6]
i1[1]
i2[1]
i1[2]
i2[2]
i1[3]
i2[3]

:=
:=
:=
:=
:=
:=

MtrxIs[1]
MtrxIs[2]
MtrxIs[3]
MtrxIs[4]
MtrxIs[5]
MtrxIs[6]

i1A:=i1[1] -(i1[2]/2)-(i1[3]/2)
i2A:=i2[1]
i1B:=i1[2] -(i1[1]/2)-(i1[3]/2)
i2B:=i2[2]

162

Apndice A. Cdigo Fonte da biblioteca RLIB

703
i1C:=i1[3] -(i1[2]/2)-(i1[1]/2)
704
i2C:=i2[3]
705
v1A:=v1[1]
706
v2A:=v2[1]
707
v1B:=v1[2]
708
v2B:=v2[2]
709
v1C:=v1[3]
710
v2C:=v2[3]
711
712
ENDEXEC
713 ENDMODEL
714 RECORD
715
RNS6Yd.HN1 AS HN1
716
RNS6Yd.BN1 AS BN1
717
RNS6Yd.HN3 AS HN3
718
RNS6Yd.BN3 AS BN3
719
RNS6Yd.HN5 AS HN5
720
RNS6Yd.BN5 AS BN5
721
RNS6Yd.HN7 AS HN7
722
RNS6Yd.BN7 AS BN7
723
RNS6Yd.HN8 AS HN8
724
RNS6Yd.BN8 AS BN8
725
RNS6Yd.BN9 AS BN9
726
RNS6Yd.HN9 AS HN9
727
RNS6Yd.BN10 AS BN10
728
RNS6Yd.HN10 AS HN10
729
RNS6Yd.BN11 AS BN11
730
RNS6Yd.HN11 AS HN11
731
RNS6Yd.BN12 AS BN12
732
RNS6Yd.HN12 AS HN12
733
RNS6Yd.i1A AS i1A
734
RNS6Yd.i2A AS i2A
735
RNS6Yd.i1B AS i1B
736
RNS6Yd.i2B AS i2B
737
RNS6Yd.i1C AS i1C
738
RNS6Yd.i2C AS i2C
739
RNS6Yd.ins1 AS ins1
740
RNS6Yd.ins2 AS ins2
741
RNS6Yd.ins3 AS ins3
742
RNS6Yd.ins4 AS ins4
743
RNS6Yd.ins5 AS ins5
744
RNS6Yd.ins6 AS ins6
745
RNS6Yd.v1A AS v1A
746
RNS6Yd.v2A AS v2A
747
RNS6Yd.v1B AS v1B
748
RNS6Yd.v2B AS v2B
749
RNS6Yd.v1C AS v1C
750
RNS6Yd.v2C AS v2C
751
RNS6Yd.io1A AS io1A
752
RNS6Yd.io2A AS io2A
753
RNS6Yd.io1B As io1B
754
RNS6Yd.io2B As io2B
755
RNS6Yd.io1C AS io1C
756
RNS6Yd.io2C AS io2C
757
RNS6Yd.v1p AS v1p
758
RNS6Yd.v2p AS v2p
759
RNS6Yd.v3p AS v3p
760
RNS6Yd.v11p AS v11p
761
RNS6Yd.v12p AS v12p
762
RNS6Yd.v13p AS v13p

163

Apndice A. Cdigo Fonte da biblioteca RLIB

763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822

RNS6Yd.v21p AS v21p
RNS6Yd.v22p AS v22p
RNS6Yd.v23p AS v23p
RNS6Yd.vn AS vn
RNS6Yd.in AS in
RNS6Yd.xla AS xla
RNS6Yd.xlb AS xlb
RNS6Yd.xlc AS xlc
RNS6Yd.O1 AS O1
RNS6Yd.O2 AS O2
RNS6Yd.O3 AS O3
RNS6Yd.O4 AS O4
RNS6Yd.O5 AS O5
RNS6Yd.O6 AS O6
RNS6Yd.O7 AS O7
RNS6Yd.O8 AS O8
RNS6Yd.O9 AS O9
RNS6Yd.O10 AS O10
RNS6Yd.O11 AS O11
RNS6Yd.O12 AS O12
RNS6Yd.O13 AS O13
RNS6Yd.O14 AS O14
RNS6Yd.O15 AS O15
RNS6Yd.O16 AS O16
RNS6Yd.O17 AS O17
RNS6Yd.O18 AS O18
USE RNS6Yd AS RNS6Yd
INPUT
v[1]:= M0001A
v[2]:= M0001B
v[3]:= M0001C
DATA
Aw:=
0.0158
Ay:=
0.0158
Ar:=
0.0158
N0:=
195.
N3:=
98.
Lw1:=
0.39
Lw2:=
0.27
Ly:=
0.3608
Lr:=
0.8
Ld0:= 3.88E-4
Ld3:= 0.00678
OUTPUT
X0001A:=v2[1]
X0001B:=v2[2]
X0001C:=v2[3]
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
X0002A
.001
0
X0002B
.001
0
X0002C
.001
0
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14X0002A 0
2449.5
60.
-1.
1.E3

164

165

Apndice A. Cdigo Fonte da biblioteca RLIB

823
824
825
826
827
828
829
830
831
832
833

14X0002B 0
2449.5
14X0002C 0
2449.5
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

60.
60.

-120.
120.

-1.
-1.

1.E3
1.E3

Cdigo Fonte A.9 Cdigo ATP para reator naturalmente saturado com 6 enrolamentos e
considerando efeitos de histerese
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW dezembro, quinta-feira 3, 2015
C A Bonneville Power Administration program
C by H. K. Hoidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
5.E-6
.05
60.
1.E-180
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
M0001A {v(X0002A)}
M0001B {v(X0002B)}
M0001C {v(X0002C)}
OUTPUT
X0001A
X0001B
X0001C
MODEL RNS9
INPUT v[1..3]
DATA Aw
Ay
Ar
N1
N2
N3
Lw1
Lw2
Lw3
Ly
Lr
Ld1
Ld2
Ld3
VAR B[1..48]
-- Campo magnetico dos nove trechos
H[1..48]
-- Densidade magnetica para os nove trechos
HN[1..15]
BN[1..15]
HN1,HN2,HN3,HN4,HN5,HN6,HN7,HN8,HN9,HN10,HN11,HN12,HN13,HN14,HN15
BN1,BN2,BN3,BN4,BN5,BN6,BN7,BN8,BN9,BN10,BN11,BN12,BN13,BN14,BN15
l[1..47]
-- Indutancias para os nove trechos
lp[2..47]
-- Indutancias linhas (l) para os nove trechos

Apndice A. Cdigo Fonte da biblioteca RLIB

45
d1,d2,d3,d4,d5,d6,d7,d8,d9
46
P1,P2,P3,P4,P5,P6,P7,P8,P9
47
P10,P11,P12,P13,P14,P15,P16,P17,P18
48
P19, P20, P21, P22, P23, P24
49
O1,O2,O3,O4,O5,O6,O7,O8,O9
50
O10,O11,O12,O13,O14,O15,O16,O17,O18
51
O19, O20, O21, O22, O23, O24
52
ins1,ins2,ins3,ins4,ins5,ins6,ins7,ins8,ins9
53
i1A,i1B,i1C
54
i2A,i2B,i2C
55
i3A,i3B,i3C
56
i1[1..3],i2[1..3],i3[1..3]
57
v1A,v1B,v1C
58
v2A,v2B,v2C
59
v3A,v3B,v3C
60
v1[1..3],v2[1..3],v3[1..3]
61
v1p, v2p, v3p
62
v11p,v12p,v13p
63
v21p,v22p,v23p
64
io1A,io1B, io1C
65
io2A,io2B,io2C
66
io3A,io3B,io3C
67
--Library Variables
68
m, dt, determnt, aux,
69
lMtrxA, cMtrxA, MtrxA[1..900]
70
lMtrxP, cMtrxP, MtrxP[1..900]
71
lMtrxN, cMtrxN, MtrxN[1..900]
72
lMtrxV, cMtrxV, MtrxV[1..900]
73
lMtrxO, cMtrxO, MtrxO[1..900]
74
lMtrxI, cMtrxI, MtrxI[1..900]
75
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
76
lMtrxIns, cMtrxIns, MtrxIns[1..900]
77
lMtrxIs, cMtrxIs, MtrxIs[1..900]
78 OUTPUT v3[1..3]
79 $INCLUDE ./RLib.m
80 INIT
81
HN[1..15]:=0
82
BN[1..15]:=0
83
ins1:=0.01
84
ins2:=0.01
85
ins3:=0.01
86
ins4:=0.01
87
ins5:=0.01
88
ins6:=0.01
89
ins7:=0.01
90
ins8:=0.01
91
ins9:=0.01
92
i1[1..3]:=0.01
93
i2[1..3]:=0.01
94
i3[1..3]:=0.01
95
v1[1..3]:=0.01
96
v2[1..3]:=0.01
97
v3[1..3]:=0.01
98
i1A:=0.01
99
i2A:=0.01
100
i3A:=0.01
101
i1B:=0.01
102
i2B:=0.01
103
i3B:=0.01
104
i1C:=0.01

166

Apndice A. Cdigo Fonte da biblioteca RLIB

105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

i2C:=0.01
i3C:=0.01
v1A:=0.01
v2A:=0.01
v3A:=0.01
v1B:=0.01
v2B:=0.01
v3B:=0.01
v1C:=0.01
v2C:=0.01
v3C:=0.01
P1:=0.01
P2:=0.01
P3:=0.01
P4:=0.01
P5:=0.01
P6:=0.01
P13:=0.01
P14:=0.01
P15:=0.01
P16:=0.01
P17:=0.01
P18:=0.01
P19:=0.01
P20:=0.01
P21:=0.01
P22:=0.01
P23:=0.01
P24:=0.01
v1p:=0
v2p:=0
v3p:=0
v11p:=0
v12p:=0
v13p:=0
v21p:=0
v22p:=0
v23p:=0
io1A:=0
io2A:=0
io3A:=0
io1B:=0
io2B:=0
io3B:=0
io1C:=0
io2C:=0
io3C:=0
ENDINIT
EXEC
H[1]:=11.937
B[1]:=0.4
H[2]:=13.608
B[2]:=0.499999
H[3]:=15.358
B[3]:=0.599998
H[4]:=17.109
B[4]:=0.699997
H[5]:=18.701
B[5]:=0.799995
H[6]:=20.292

167

Apndice A. Cdigo Fonte da biblioteca RLIB

165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224

B[6]:=0.899994
H[7]:=21.168
B[7]:=0.999992
H[8]:=21.884
B[8]:=1.049991
H[9]:=22.839
B[9]:=1.099991
H[10]:=23.635
B[10]:=1.14999
H[11]:=24.987
B[11]:=1.19999
H[12]:=26.42
B[12]:=1.24999
H[13]:=28.17
B[13]:=1.29999
H[14]:=30.637
B[14]:=1.349991
H[15]:=33.025
B[15]:=1.399992
H[16]:=37.242
B[16]:=1.449995
H[17]:=42.972
B[17]:=1.499998
H[18]:=45.757
B[18]:=1.52
H[19]:=48.94
B[19]:=1.540003
H[20]:=53.317
B[20]:=1.560006
H[21]:=58.887
B[21]:=1.580011
H[22]:=66.049
B[22]:=1.600016
H[23]:=76.394
B[23]:=1.620025
H[24]:=85.944
B[24]:=1.640033
H[25]:=103.451
B[25]:=1.660048
H[26]:=119.366
B[26]:=1.680062
H[27]:=147.218
B[27]:=1.700087
H[28]:=163.134
B[28]:=1.710101
H[29]:=179.049
B[29]:=1.720115
H[30]:=202.923
B[30]:=1.730136
H[31]:=226.796
B[31]:=1.740157
H[32]:=259.423
B[32]:=1.750186
H[33]:=282.5
B[33]:=1.760207
H[34]:=334.225
B[34]:=1.770253
H[35]:=377.993
B[35]:=1.780292
H[36]:=445.634

168

Apndice A. Cdigo Fonte da biblioteca RLIB

225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284

B[36]:=1.790352
H[37]:=501.338
B[37]:=1.800402
H[38]:=612.747
B[38]:=1.810502
H[39]:=700.282
B[39]:=1.82058
H[40]:=835.564
B[40]:=1.830701
H[41]:=954.93
B[41]:=1.840808
H[42]:=1114.085
B[42]:=1.850951
H[43]:=1193.662
B[43]:=1.861022
H[44]:=1392.606
B[44]:=1.871201
H[45]:=1591.549
B[45]:=1.881379
H[46]:=2500
B[46]:=1.922194
H[47]:=5000
B[47]:=1.964438
H[48]:=10000
B[48]:=1.978929
-- Metodo de aproximacao linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 47 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximacao linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 47 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
v1[1]:=v[1]
v1[2]:=v[2]
v1[3]:=v[3]
IF t=5e-5 THEN
v1p:=v[1]/cos(377*t)
v2p:=v[2]/cos(377*t-2.094)
v3p:=v[3]/cos(377*t+2.094)
ENDIF
v1[1]:=((0.743*v1p))*cos(377*t)
v1[2]:=((0.743*v2p))*cos(377*t-2.094)
v1[3]:=((0.743*v3p))*cos(377*t+2.094)
IF t=5e-5 THEN
v11p:=v1[1]/cos(377*t)
v12p:=v1[2]/cos(377*t-2.094)
v13p:=v1[3]/cos(377*t+2.094)
ENDIF
v2[1]:=((N2/N1)*v11p)*cos(377*t)
v2[2]:=((N2/N1)*v12p)*cos(377*t-2.094)

169

Apndice A. Cdigo Fonte da biblioteca RLIB

285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344

v2[3]:=((N2/N1)*v13p)*cos(377*t+2.094)
v21p:=((N2/N1)*v11p)
v22p:=((N2/N1)*v12p)
v23p:=((N2/N1)*v13p)
v3[1]:=(v11p*0.675)*cos(377*t-0.524)
v3[2]:=(v12p*0.675)*cos(377*t-2.094-0.524)
v3[3]:=(v13p*0.675)*cos(377*t+2.094-0.524)
--Enrolamentos da esquerda
d1:=Aw*(N1+N2)*0.96
BN[1]:=(((v11p+v21p)/(377))*sin(377*t))/d1
BN[2]:=BN[1]
--Enrolamentos do MEIO
d3:=Aw*(N1+N2)*0.96
BN[3]:=(((v12p+v22p)/(377))*sin(377*t-2.094))/d3
BN[4]:=BN[3]
--Enrolamentos da direita
d5:=Aw*(N1+N2)*0.96
BN[5]:=(((v13p+v23p)/(377))*sin(377*t+2.094))/d5
BN[6]:=BN[5]
FOR i:=1 TO 6 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
-- PERMEANCIAS DOS ENROLAMENTOS
P1:=(BN[1]/HN[1])*Aw/(Lw1)
P2:=(BN[1]/HN[1])*Aw/(Lw2)
P3:=(BN[1]/HN[1])*Aw/(Lw3)
P4:=(BN[3]/HN[3])*Aw/(Lw1)
P5:=(BN[3]/HN[3])*Aw/(Lw2)
P6:=(BN[3]/HN[3])*Aw/(Lw3)
P7:=(BN[5]/HN[5])*Aw/(Lw1)
P8:=(BN[5]/HN[5])*Aw/(Lw2)
P9:=(BN[5]/HN[5])*Aw/(Lw3)
-- PERMEANCIAS DE DISPERSAO
P10:=Ld1/(N1*N1)
P11:=Ld2/(N2*N2)
P12:=Ld3/(N3*N3)
P13:=Ld1/(N1*N1)
P14:=Ld2/(N2*N2)

170

Apndice A. Cdigo Fonte da biblioteca RLIB

345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404

P15:=Ld3/(N3*N3)
P16:=Ld1/(N1*N1)
P17:=Ld2/(N2*N2)
P18:=Ld3/(N3*N3)
-- Fluxo principal
O1:=BN[1]*Aw*0.96
O2:=BN[1]*Aw*0.96
O3:=BN[1]*Aw*0.96
O4:=BN[3]*Aw*0.96
O5:=BN[3]*Aw*0.96
O6:=BN[3]*Aw*0.96
O7:=BN[5]*Aw*0.96
O8:=BN[5]*Aw*0.96
O9:=BN[5]*Aw*0.96
--Fluxo disperso
O10:=P10*((HN[1]*Lw1)+(O1/P1))
O11:=P11*((HN[1]*Lw2)+(O2/P2))
O12:=P12*((HN[1]*Lw3)+(O3/P3))
O13:=P13*((HN[3]*Lw1)+(O4/P4))
O14:=P14*((HN[3]*Lw2)+(O5/P5))
O15:=P15*((HN[3]*Lw3)+(O6/P6))
O16:=P16*((HN[5]*Lw1)+(O7/P7))
O17:=P17*((HN[5]*Lw2)+(O8/P8))
O18:=P18*((HN[5]*Lw3)+(O9/P9))
--Fluxo nos jugos e retornos
O21:=(O1-O10)/2
O22:=O21
O19:=O22
O23:=(O7-O16)/2
O24:=O23
O20:=O24
BN[7]:=O19/(Ar*0.96)
BN[8]:=O20/(Ar*0.96)
BN[9]:=O21/(Ay*0.96)
BN[10]:=O22/(Ay*0.96)
BN[11]:=O23/(Ay*0.96)
BN[12]:=O24/(Ay*0.96)
FOR i:=7 TO 12 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR

171

Apndice A. Cdigo Fonte da biblioteca RLIB

405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464

P19:=(BN[7]/HN[7])*Ar/Lr
P20:=(BN[8]/HN[8])*Ar/Lr
P21:=(BN[9]/HN[9])*Ay/Ly
P22:=(BN[10]/HN[10])*Ay/Ly
P23:=(BN[11]/HN[11])*Ay/Ly
P24:=(BN[12]/HN[12])*Ay/Ly
BN1:=BN[1]
BN2:=BN[2]
BN3:=BN[3]
BN4:=BN[4]
BN5:=BN[5]
BN6:=BN[6]
BN7:=BN[7]
BN8:=BN[8]
BN9:=BN[9]
BN10:=BN[10]
BN11:=BN[11]
BN12:=BN[12]
HN1:=HN[1]
HN2:=HN[2]
HN3:=HN[3]
HN4:=HN[4]
HN5:=HN[5]
HN6:=HN[6]
HN7:=HN[7]
HN8:=HN[8]
HN9:=HN[9]
HN10:=HN[10]
HN11:=HN[11]
HN12:=HN[12]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 24
cMtrxA := 9
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[ 1,-1, 0, 0, 0, 0, 0, 0, 0]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[ 0, 1,-1, 0, 0, 0, 0, 0, 0]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[ 0, 0, 1, 0, 0, 0, 0, 0, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[ 0, 0, 0, 1,-1, 0, 0, 0, 0]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[ 0, 0, 0, 0, 1,-1, 0, 0, 0]
MtrxA[5*cMtrxA+1..6*cMtrxA]
:=[ 0, 0, 0, 0, 0, 1, 0, 0, 0]
MtrxA[6*cMtrxA+1..7*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 1,-1, 0]
MtrxA[7*cMtrxA+1..8*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 0, 1,-1]
MtrxA[8*cMtrxA+1..9*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 0, 0, 1]
MtrxA[9*cMtrxA+1..10*cMtrxA] :=[ -1, 1, 0,0, 0, 0, 0, 0, 0]
MtrxA[10*cMtrxA+1..11*cMtrxA] :=[ 0,-1, 1, 0, 0, 0, 0, 0, 0]
MtrxA[11*cMtrxA+1..12*cMtrxA] :=[ 0, 0,-1, 0, 0, 0, 0, 0, 0]
MtrxA[12*cMtrxA+1..13*cMtrxA] :=[ 0, 0, 0,-1, 1, 0, 0, 0, 0]
MtrxA[13*cMtrxA+1..14*cMtrxA] :=[ 0, 0, 0, 0,-1, 1, 0, 0, 0]
MtrxA[14*cMtrxA+1..15*cMtrxA] :=[ 0, 0, 0, 0, 0,-1, 0, 0, 0]
MtrxA[15*cMtrxA+1..16*cMtrxA] :=[ 0, 0, 1, 0, 0, 0,-1, 1, 0]
MtrxA[16*cMtrxA+1..17*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0,-1, 1]
MtrxA[17*cMtrxA+1..18*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0, 0,-1]
MtrxA[18*cMtrxA+1..19*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0 ,0 ,0]
MtrxA[19*cMtrxA+1..20*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0, 0, 0]
MtrxA[20*cMtrxA+1..21*cMtrxA] :=[ -1, 0, 0, 0,0, 0, 0, 0, 0]
MtrxA[21*cMtrxA+1..22*cMtrxA] :=[ -1, 0, 0, 1,0, 0, 0, 0, 0]

172

Apndice A. Cdigo Fonte da biblioteca RLIB

465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524

MtrxA[22*cMtrxA+1..23*cMtrxA] :=[ 0, 0, 0, 1,0, 0, -1 ,0 ,0]


MtrxA[23*cMtrxA+1..24*cMtrxA] :=[ 0, 0, 0, 0,0, 0, -1 ,0 ,0]

lMtrxN := 9
cMtrxN := 9
MtrxN[1..m]:=0
MtrxN[0*cMtrxN+1]
MtrxN[1*cMtrxN+2]
MtrxN[2*cMtrxN+3]
MtrxN[3*cMtrxN+4]
MtrxN[4*cMtrxN+5]
MtrxN[5*cMtrxN+6]
MtrxN[6*cMtrxN+7]
MtrxN[7*cMtrxN+8]
MtrxN[8*cMtrxN+9]

:=
:=
:=
:=
:=
:=
:=
:=
:=

N1
N2
N3
N1
N2
N3
N1
N2
N3

lMtrxV := 9
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1]
MtrxV[1*cMtrxV+1]
MtrxV[2*cMtrxV+1]
MtrxV[3*cMtrxV+1]
MtrxV[4*cMtrxV+1]
MtrxV[5*cMtrxV+1]
MtrxV[6*cMtrxV+1]
MtrxV[7*cMtrxV+1]
MtrxV[8*cMtrxV+1]

:=
:=
:=
:=
:=
:=
:=
:=
:=

v1[1]
v2[1]
v3[1]
v1[2]
v2[2]
v3[2]
v1[3]
v2[3]
v3[3]

lMtrxO := 9
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] :=
MtrxO[1*cMtrxO+1] :=
MtrxO[2*cMtrxO+1] :=
MtrxO[3*cMtrxO+1] :=
MtrxO[4*cMtrxO+1] :=
MtrxO[5*cMtrxO+1] :=
MtrxO[6*cMtrxO+1] := O7
MtrxO[7*cMtrxO+1] :=
MtrxO[8*cMtrxO+1] :=

O1
O2
O3
O4
O5
O6
O8
O9

lMtrxInsIn := 9
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1]
MtrxInsIn[1*cMtrxInsIn+1]
MtrxInsIn[2*cMtrxInsIn+1]
MtrxInsIn[3*cMtrxInsIn+1]
MtrxInsIn[4*cMtrxInsIn+1]
MtrxInsIn[5*cMtrxInsIn+1]
MtrxInsIn[6*cMtrxInsIn+1]
MtrxInsIn[7*cMtrxInsIn+1]
MtrxInsIn[8*cMtrxInsIn+1]
dt := timestep
lMtrxP := 24,

:=
:=
:=
:=
:=
:=
:=
:=
:=

ins1
ins2
ins3
ins4
ins5
ins6
ins7
ins8
ins9

173

Apndice A. Cdigo Fonte da biblioteca RLIB

525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584

cMtrxP := 24,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP + 1] := P1
MtrxP[(2-1)*cMtrxP + 2] := P2
MtrxP[(3-1)*cMtrxP + 3] := P3
MtrxP[(4-1)*cMtrxP + 4] := P4
MtrxP[(5-1)*cMtrxP + 5] := P5
MtrxP[(6-1)*cMtrxP + 6] := P6
MtrxP[(7-1)*cMtrxP + 7] := P7
MtrxP[(8-1)*cMtrxP + 8] := P8
MtrxP[(9-1)*cMtrxP + 9] := P9
MtrxP[(10-1)*cMtrxP + 10] := P10
MtrxP[(11-1)*cMtrxP + 11] := P11
MtrxP[(12-1)*cMtrxP + 12] := P12
MtrxP[(13-1)*cMtrxP + 13] := P13
MtrxP[(14-1)*cMtrxP + 14] := P14
MtrxP[(15-1)*cMtrxP + 15] := P15
MtrxP[(16-1)*cMtrxP + 16] := P16
MtrxP[(17-1)*cMtrxP + 17] := P17
MtrxP[(18-1)*cMtrxP + 18] := P18
MtrxP[(19-1)*cMtrxP + 19] := P19
MtrxP[(20-1)*cMtrxP + 20] := P20
MtrxP[(21-1)*cMtrxP + 21] := P21
MtrxP[(22-1)*cMtrxP + 22] := P22
MtrxP[(23-1)*cMtrxP + 23] := P23
MtrxP[(24-1)*cMtrxP + 24] := P24
USE RNSMatrix as RNSM1
INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
ins1 := MtrxIns[1]
ins2 := MtrxIns[2]

174

Apndice A. Cdigo Fonte da biblioteca RLIB

585
ins3 := MtrxIns[3]
586
ins4 := MtrxIns[4]
587
ins5 := MtrxIns[5]
588
ins6 := MtrxIns[6]
589
ins7 := MtrxIns[7]
590
ins8 := MtrxIns[8]
591
ins9 := MtrxIns[9]
592
593
i1[1] := MtrxIs[1]
594
i2[1] := MtrxIs[2]
595
i3[1] := MtrxIs[3]
596
i1[2] := MtrxIs[4]
597
i2[2] := MtrxIs[5]
598
i3[2] := MtrxIs[6]
599
i1[3] := MtrxIs[7]
600
i2[3] := MtrxIs[8]
601
i3[3] := MtrxIs[9]
602
603
i1A:=i1[1]+(i2[2])-(i2[1]/2)-(i2[3]/2)-(i1[3]/2)-(i1[2]/2)
604
-io1A+(io2B)-(io2A/2)-(io2C/2)-(io1C/2)-(io1B/2)
605
606
i1B:=i1[2]+(i2[3])-(i2[2]/2)-(i2[1]/2)-(i1[1]/2)-(i1[3]/2)
607
-io1B+(io2C)-(io2B/2)-(io2A/2)-(io1A/2)-(io1C/2)
608
609
i1C:=i1[3]+(i2[1])-(i2[2]/2)-(i2[3]/2)-(i1[1]/2)-(i1[2]/2)
610
-io1C+(io2A)-(io2B/2)-(io2C/2)-(io1A/2)-(io1B/2)
611
612
i2A:=i2[1]
613
i2B:=i2[2]
614
i2C:=i2[3]
615
616
i3A:=i3[1]
617
i3B:=i3[2]
618
i3C:=i3[3]
619
620
v1A:=v1[1]
621
v2A:=v2[1]
622
v3A:=v3[1]
623
v1B:=v1[2]
624
v2B:=v2[2]
625
v3B:=v3[2]
626
v1C:=v1[3]
627
v2C:=v2[3]
628
v3C:=v3[3]
629
630
ENDEXEC
631 ENDMODEL
632 RECORD
633
RNS9.HN1 AS HN1
634
RNS9.BN1 AS BN1
635
RNS9.HN3 AS HN3
636
RNS9.BN3 AS BN3
637
RNS9.HN5 AS HN5
638
RNS9.BN5 AS BN5
639
RNS9.HN7 AS HN7
640
RNS9.BN7 AS BN7
641
RNS9.HN8 AS HN8
642
RNS9.BN8 AS BN8
643
RNS9.BN9 AS BN9
644
RNS9.HN9 AS HN9

175

Apndice A. Cdigo Fonte da biblioteca RLIB

645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704

RNS9.BN10 AS BN10
RNS9.HN10 AS HN10
RNS9.BN11 AS BN11
RNS9.HN11 AS HN11
RNS9.BN12 AS BN12
RNS9.HN12 AS HN12
RNS9.i1A AS i1A
RNS9.i2A AS i2A
RNS9.i3A AS i3A
RNS9.i1B AS i1B
RNS9.i2B AS i2B
RNS9.i3B AS i3B
RNS9.i1C AS i1C
RNS9.i2C AS i2C
RNS9.i3C AS i3C
RNS9.ins1 AS ins1
RNS9.ins2 AS ins2
RNS9.ins3 AS ins3
RNS9.ins4 AS ins4
RNS9.ins5 AS ins5
RNS9.ins6 AS ins6
RNS9.ins7 AS ins7
RNS9.ins8 AS ins8
RNS9.ins9 AS ins9
RNS9.v1A AS v1A
RNS9.v2A AS v2A
RNS9.v3A AS v3A
RNS9.v1B AS v1B
RNS9.v2B AS v2B
RNS9.v3B AS v3B
RNS9.v1C AS v1C
RNS9.v2C AS v2C
RNS9.v3C AS v3C
RNS9.io1A AS io1A
RNS9.io2A AS io2A
RNS9.io1B As io1B
RNS9.io2B As io2B
RNS9.io1C AS io1C
RNS9.io2C AS io2C
RNS9.v11p AS v11p
RNS9.v12p AS v12p
RNS9.v13p AS v13p
RNS9.v21p AS v21p
RNS9.v22p AS v22p
RNS9.v23p AS v23p
RNS9.O1 AS O1
RNS9.O2 AS O2
RNS9.O3 AS O3
RNS9.O4 AS O4
RNS9.O5 AS O5
RNS9.O6 AS O6
RNS9.O7 AS O7
RNS9.O8 AS O8
RNS9.O9 AS O9
RNS9.O10 AS O10
RNS9.O11 AS O11
RNS9.O12 AS O12
RNS9.O13 AS O13
RNS9.O14 AS O14
RNS9.O15 AS O15

176

Apndice A. Cdigo Fonte da biblioteca RLIB

705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761

177

RNS9.O16 AS O16
RNS9.O17 AS O17
RNS9.O18 AS O18
RNS9.O19 AS O19
RNS9.O20 AS O20
RNS9.O21 AS O21
RNS9.O22 AS O22
RNS9.O23 AS O23
RNS9.O24 AS O24
USE RNS9 AS RNS9
INPUT
v[1]:= M0001A
v[2]:= M0001B
v[3]:= M0001C
DATA
Aw:=
0.0158
Ay:=
0.0158
Ar:=
0.0158
N1:=
145.
N2:=
77.
N3:=
98.
Lw1:=
0.29
Lw2:=
0.154
Lw3:=
0.27
Ly:=
0.3608
Lr:=
0.8
Ld1:= 5.119E-5
Ld2:= 1.279E-4
Ld3:=
0.0108
OUTPUT
X0001A:=v3[1]
X0001B:=v3[2]
X0001C:=v3[3]
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
X0002A
1.
0
X0002B
1.
0
X0002C
1.
0
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14X0002A
2449.5
60.
-1.
100.
14X0002B
2449.5
60.
-120.
-1.
100.
14X0002C
2449.5
60.
-240.
-1.
100.
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

Cdigo Fonte A.10 Cdigo ATP para reator naturalmente saturado com 9 enrolamentos

Apndice A. Cdigo Fonte da biblioteca RLIB

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59

BEGIN NEW DATA CASE


C -------------------------------------------------------C Generated by ATPDRAW dezembro, quinta-feira 3, 2015
C A Bonneville Power Administration program
C by H. K. Hoidalen at SEfAS/NTNU - NORWAY 1994-2009
C -------------------------------------------------------POWER FREQUENCY
60.
C dT >< Tmax >< Xopt >< Copt ><Epsiln>
5.E-6
.05
60.
1.E-180
500
1
1
1
1
0
0
1
0
/MODELS
MODELS
INPUT
M0001A {v(X0002A)}
M0001B {v(X0002B)}
M0001C {v(X0002C)}
OUTPUT
X0001A
X0001B
X0001C
MODEL RNS9
INPUT v[1..3]
DATA Aw
Ay
Ar
N1
N2
N3
Lw1
Lw2
Lw3
Ly
Lr
Ld1
Ld2
Ld3
VAR B[1..48]
-- Campo magnetico dos nove trechos
H[1..48]
-- Densidade magnetica para os nove trechos
HN[1..15]
BN[1..15]
HN1,HN2,HN3,HN4,HN5,HN6,HN7,HN8,HN9,HN10,HN11,HN12,HN13,HN14,HN15
BN1,BN2,BN3,BN4,BN5,BN6,BN7,BN8,BN9,BN10,BN11,BN12,BN13,BN14,BN15
l[1..47]
-- Indutancias para os nove trechos
lp[2..47]
-- Indutancias linhas (l) para os nove trechos
d1,d2,d3,d4,d5,d6,d7,d8,d9
P1,P2,P3,P4,P5,P6,P7,P8,P9
P10,P11,P12,P13,P14,P15,P16,P17,P18
P19, P20, P21, P22, P23, P24
O1,O2,O3,O4,O5,O6,O7,O8,O9
O10,O11,O12,O13,O14,O15,O16,O17,O18
O19, O20, O21, O22, O23, O24
ins1,ins2,ins3,ins4,ins5,ins6,ins7,ins8,ins9
i1A,i1B,i1C
i2A,i2B,i2C
i3A,i3B,i3C
i1[1..3],i2[1..3],i3[1..3]
v1A,v1B,v1C
v2A,v2B,v2C
v3A,v3B,v3C

178

Apndice A. Cdigo Fonte da biblioteca RLIB

60
v1[1..3],v2[1..3],v3[1..3]
61
v1p, v2p, v3p
62
v11p,v12p,v13p
63
v21p,v22p,v23p
64
io1A,io1B, io1C
65
io2A,io2B,io2C
66
io3A,io3B,io3C
67
--Library Variables
68
m, dt, determnt, aux,
69
lMtrxA, cMtrxA, MtrxA[1..900]
70
lMtrxP, cMtrxP, MtrxP[1..900]
71
lMtrxN, cMtrxN, MtrxN[1..900]
72
lMtrxV, cMtrxV, MtrxV[1..900]
73
lMtrxO, cMtrxO, MtrxO[1..900]
74
lMtrxI, cMtrxI, MtrxI[1..900]
75
lMtrxInsIn, cMtrxInsIn, MtrxInsIn[1..900]
76
lMtrxIns, cMtrxIns, MtrxIns[1..900]
77
lMtrxIs, cMtrxIs, MtrxIs[1..900]
78
Hc -- for hysteresis
79 OUTPUT v3[1..3]
80 $INCLUDE ./RLib.m
81 INIT
82
HN[1..15]:=0
83
BN[1..15]:=0
84
ins1:=0.01
85
ins2:=0.01
86
ins3:=0.01
87
ins4:=0.01
88
ins5:=0.01
89
ins6:=0.01
90
ins7:=0.01
91
ins8:=0.01
92
ins9:=0.01
93
i1[1..3]:=0.01
94
i2[1..3]:=0.01
95
i3[1..3]:=0.01
96
v1[1..3]:=0.01
97
v2[1..3]:=0.01
98
v3[1..3]:=0.01
99
i1A:=0.01
100
i2A:=0.01
101
i3A:=0.01
102
i1B:=0.01
103
i2B:=0.01
104
i3B:=0.01
105
i1C:=0.01
106
i2C:=0.01
107
i3C:=0.01
108
v1A:=0.01
109
v2A:=0.01
110
v3A:=0.01
111
v1B:=0.01
112
v2B:=0.01
113
v3B:=0.01
114
v1C:=0.01
115
v2C:=0.01
116
v3C:=0.01
117
P1:=0.01
118
P2:=0.01
119
P3:=0.01

179

Apndice A. Cdigo Fonte da biblioteca RLIB

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179

P4:=0.01
P5:=0.01
P6:=0.01
P13:=0.01
P14:=0.01
P15:=0.01
P16:=0.01
P17:=0.01
P18:=0.01
P19:=0.01
P20:=0.01
P21:=0.01
P22:=0.01
P23:=0.01
P24:=0.01
v1p:=0
v2p:=0
v3p:=0
v11p:=0
v12p:=0
v13p:=0
v21p:=0
v22p:=0
v23p:=0
io1A:=0
io2A:=0
io3A:=0
io1B:=0
io2B:=0
io3B:=0
io1C:=0
io2C:=0
io3C:=0
ENDINIT
EXEC
Hc:=53.133
H[1]:=11.937
B[1]:=0.4
H[2]:=13.608
B[2]:=0.499999
H[3]:=15.358
B[3]:=0.599998
H[4]:=17.109
B[4]:=0.699997
H[5]:=18.701
B[5]:=0.799995
H[6]:=20.292
B[6]:=0.899994
H[7]:=21.168
B[7]:=0.999992
H[8]:=21.884
B[8]:=1.049991
H[9]:=22.839
B[9]:=1.099991
H[10]:=23.635
B[10]:=1.14999
H[11]:=24.987
B[11]:=1.19999
H[12]:=26.42
B[12]:=1.24999

180

Apndice A. Cdigo Fonte da biblioteca RLIB

180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239

H[13]:=28.17
B[13]:=1.29999
H[14]:=30.637
B[14]:=1.349991
H[15]:=33.025
B[15]:=1.399992
H[16]:=37.242
B[16]:=1.449995
H[17]:=42.972
B[17]:=1.499998
H[18]:=45.757
B[18]:=1.52
H[19]:=48.94
B[19]:=1.540003
H[20]:=53.317
B[20]:=1.560006
H[21]:=58.887
B[21]:=1.580011
H[22]:=66.049
B[22]:=1.600016
H[23]:=76.394
B[23]:=1.620025
H[24]:=85.944
B[24]:=1.640033
H[25]:=103.451
B[25]:=1.660048
H[26]:=119.366
B[26]:=1.680062
H[27]:=147.218
B[27]:=1.700087
H[28]:=163.134
B[28]:=1.710101
H[29]:=179.049
B[29]:=1.720115
H[30]:=202.923
B[30]:=1.730136
H[31]:=226.796
B[31]:=1.740157
H[32]:=259.423
B[32]:=1.750186
H[33]:=282.5
B[33]:=1.760207
H[34]:=334.225
B[34]:=1.770253
H[35]:=377.993
B[35]:=1.780292
H[36]:=445.634
B[36]:=1.790352
H[37]:=501.338
B[37]:=1.800402
H[38]:=612.747
B[38]:=1.810502
H[39]:=700.282
B[39]:=1.82058
H[40]:=835.564
B[40]:=1.830701
H[41]:=954.93
B[41]:=1.840808
H[42]:=1114.085
B[42]:=1.850951

181

Apndice A. Cdigo Fonte da biblioteca RLIB

240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299

H[43]:=1193.662
B[43]:=1.861022
H[44]:=1392.606
B[44]:=1.871201
H[45]:=1591.549
B[45]:=1.881379
H[46]:=2500
B[46]:=1.922194
H[47]:=5000
B[47]:=1.964438
H[48]:=10000
B[48]:=1.978929
-- Metodo de aproximaco linear por trechos
-- Esse loop calcula a indutancia de cada trecho
FOR i:=1 TO 47 DO
l[i]:=(B[i+1]-B[i])/(H[i+1]-H[i])
ENDFOR
-----

Metodo de aproximaco linear por trechos parte 2


Segundo loop para calcular o l para cada trecho
Utilizar Lp para criar indutores equivalentes que facam
o mesmo efeito na indutancia total.

FOR i:=2 TO 47 DO
lp[i]:=1/((1/l[i])-(1/l[i-1]))
ENDFOR
v1[1]:=v[1]
v1[2]:=v[2]
v1[3]:=v[3]
IF t=5e-5 THEN
v1p:=v[1]/cos(377*t)
v2p:=v[2]/cos(377*t-2.094)
v3p:=v[3]/cos(377*t+2.094)
ENDIF
v1[1]:=((0.743*v1p))*cos(377*t)
v1[2]:=((0.743*v2p))*cos(377*t-2.094)
v1[3]:=((0.743*v3p))*cos(377*t+2.094)
IF t=5e-5 THEN
v11p:=v1[1]/cos(377*t)
v12p:=v1[2]/cos(377*t-2.094)
v13p:=v1[3]/cos(377*t+2.094)
ENDIF
v2[1]:=((N2/N1)*v11p)*cos(377*t)
v2[2]:=((N2/N1)*v12p)*cos(377*t-2.094)
v2[3]:=((N2/N1)*v13p)*cos(377*t+2.094)
v21p:=((N2/N1)*v11p)
v22p:=((N2/N1)*v12p)
v23p:=((N2/N1)*v13p)
v3[1]:=(v11p*0.675)*cos(377*t-0.524)
v3[2]:=(v12p*0.675)*cos(377*t-2.094-0.524)
v3[3]:=(v13p*0.675)*cos(377*t+2.094-0.524)
--Enrolamentos da esquerda
d1:=Aw*(N1+N2)*0.96
BN[1]:=(((v11p+v21p)/(377))*sin(377*t))/d1
BN[2]:=BN[1]

182

Apndice A. Cdigo Fonte da biblioteca RLIB

300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359

--Enrolamentos do MEIO
d3:=Aw*(N1+N2)*0.96
BN[3]:=(((v12p+v22p)/(377))*sin(377*t-2.094))/d3
BN[4]:=BN[3]
--Enrolamentos da direita
d5:=Aw*(N1+N2)*0.96
BN[5]:=(((v13p+v23p)/(377))*sin(377*t+2.094))/d5
BN[6]:=BN[5]
FOR i:=1 TO 6 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
IF v[1]<0 THEN
HN[i]:=HN[i]-Hc
ELSE
HN[i]:=HN[i]+Hc
ENDIF
ENDFOR
-- PERMEANCIAS DOS ENROLAMENTOS
P1:=(BN[1]/HN[1])*Aw/(Lw1)
P2:=(BN[1]/HN[1])*Aw/(Lw2)
P3:=(BN[1]/HN[1])*Aw/(Lw3)
P4:=(BN[3]/HN[3])*Aw/(Lw1)
P5:=(BN[3]/HN[3])*Aw/(Lw2)
P6:=(BN[3]/HN[3])*Aw/(Lw3)
P7:=(BN[5]/HN[5])*Aw/(Lw1)
P8:=(BN[5]/HN[5])*Aw/(Lw2)
P9:=(BN[5]/HN[5])*Aw/(Lw3)
-- PERMEANCIAS DE DISPERSAO
P10:=Ld1/(N1*N1)
P11:=Ld2/(N2*N2)
P12:=Ld3/(N3*N3)
P13:=Ld1/(N1*N1)
P14:=Ld2/(N2*N2)
P15:=Ld3/(N3*N3)
P16:=Ld1/(N1*N1)
P17:=Ld2/(N2*N2)
P18:=Ld3/(N3*N3)
-- Fluxo principal
O1:=BN[1]*Aw*0.96
O2:=BN[1]*Aw*0.96

183

Apndice A. Cdigo Fonte da biblioteca RLIB

360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419

O3:=BN[1]*Aw*0.96
O4:=BN[3]*Aw*0.96
O5:=BN[3]*Aw*0.96
O6:=BN[3]*Aw*0.96
O7:=BN[5]*Aw*0.96
O8:=BN[5]*Aw*0.96
O9:=BN[5]*Aw*0.96
--Fluxo disperso
O10:=P10*((HN[1]*Lw1)+(O1/P1))
O11:=P11*((HN[1]*Lw2)+(O2/P2))
O12:=P12*((HN[1]*Lw3)+(O3/P3))
O13:=P13*((HN[3]*Lw1)+(O4/P4))
O14:=P14*((HN[3]*Lw2)+(O5/P5))
O15:=P15*((HN[3]*Lw3)+(O6/P6))
O16:=P16*((HN[5]*Lw1)+(O7/P7))
O17:=P17*((HN[5]*Lw2)+(O8/P8))
O18:=P18*((HN[5]*Lw3)+(O9/P9))
--Fluxo nos jugos e retornos
O21:=(O1-O10)/2
O22:=O21
O19:=O22
O23:=(O7-O16)/2
O24:=O23
O20:=O24
BN[7]:=O19/(Ar*0.96)
BN[8]:=O20/(Ar*0.96)
BN[9]:=O21/(Ay*0.96)
BN[10]:=O22/(Ay*0.96)
BN[11]:=O23/(Ay*0.96)
BN[12]:=O24/(Ay*0.96)
FOR i:=7 TO 12 DO
IF BN[i]>=0 THEN
-- Calculo de H para os trechos do sistema
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]>B[j] THEN
HN[i]:=HN[i]+((BN[i]-B[j])/lp[j])
ENDIF
ENDFOR
ELSE
HN[i]:=BN[i]/l[1]
FOR j:=2 TO 47 DO
IF BN[i]<-B[j] THEN
HN[i]:=HN[i]+((BN[i]+B[j])/lp[j])
ENDIF
ENDFOR
ENDIF
ENDFOR
P19:=(BN[7]/HN[7])*Ar/Lr
P20:=(BN[8]/HN[8])*Ar/Lr
P21:=(BN[9]/HN[9])*Ay/Ly
P22:=(BN[10]/HN[10])*Ay/Ly
P23:=(BN[11]/HN[11])*Ay/Ly
P24:=(BN[12]/HN[12])*Ay/Ly
BN1:=BN[1]

184

Apndice A. Cdigo Fonte da biblioteca RLIB

420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479

BN2:=BN[2]
BN3:=BN[3]
BN4:=BN[4]
BN5:=BN[5]
BN6:=BN[6]
BN7:=BN[7]
BN8:=BN[8]
BN9:=BN[9]
BN10:=BN[10]
BN11:=BN[11]
BN12:=BN[12]
HN1:=HN[1]
HN2:=HN[2]
HN3:=HN[3]
HN4:=HN[4]
HN5:=HN[5]
HN6:=HN[6]
HN7:=HN[7]
HN8:=HN[8]
HN9:=HN[9]
HN10:=HN[10]
HN11:=HN[11]
HN12:=HN[12]
-- Essa parte corresponde ao calculo das matrizes RLib
m:=900
lMtrxA := 24
cMtrxA := 9
MtrxA[1..m]:=0
MtrxA[1..cMtrxA]
:=[ 1,-1, 0, 0, 0, 0, 0, 0, 0]
MtrxA[cMtrxA+1..2*cMtrxA]
:=[ 0, 1,-1, 0, 0, 0, 0, 0, 0]
MtrxA[2*cMtrxA+1..3*cMtrxA]
:=[ 0, 0, 1, 0, 0, 0, 0, 0, 0]
MtrxA[3*cMtrxA+1..4*cMtrxA]
:=[ 0, 0, 0, 1,-1, 0, 0, 0, 0]
MtrxA[4*cMtrxA+1..5*cMtrxA]
:=[ 0, 0, 0, 0, 1,-1, 0, 0, 0]
MtrxA[5*cMtrxA+1..6*cMtrxA]
:=[ 0, 0, 0, 0, 0, 1, 0, 0, 0]
MtrxA[6*cMtrxA+1..7*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 1,-1, 0]
MtrxA[7*cMtrxA+1..8*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 0, 1,-1]
MtrxA[8*cMtrxA+1..9*cMtrxA]
:=[ 0, 0, 0, 0, 0, 0, 0, 0, 1]
MtrxA[9*cMtrxA+1..10*cMtrxA] :=[ -1, 1, 0,0, 0, 0, 0, 0, 0]
MtrxA[10*cMtrxA+1..11*cMtrxA] :=[ 0,-1, 1, 0, 0, 0, 0, 0, 0]
MtrxA[11*cMtrxA+1..12*cMtrxA] :=[ 0, 0,-1, 0, 0, 0, 0, 0, 0]
MtrxA[12*cMtrxA+1..13*cMtrxA] :=[ 0, 0, 0,-1, 1, 0, 0, 0, 0]
MtrxA[13*cMtrxA+1..14*cMtrxA] :=[ 0, 0, 0, 0,-1, 1, 0, 0, 0]
MtrxA[14*cMtrxA+1..15*cMtrxA] :=[ 0, 0, 0, 0, 0,-1, 0, 0, 0]
MtrxA[15*cMtrxA+1..16*cMtrxA] :=[ 0, 0, 1, 0, 0, 0,-1, 1, 0]
MtrxA[16*cMtrxA+1..17*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0,-1, 1]
MtrxA[17*cMtrxA+1..18*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0, 0,-1]
MtrxA[18*cMtrxA+1..19*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0 ,0 ,0]
MtrxA[19*cMtrxA+1..20*cMtrxA] :=[ 0, 0, 0, 0, 0, 0, 0, 0, 0]
MtrxA[20*cMtrxA+1..21*cMtrxA] :=[ -1, 0, 0, 0,0, 0, 0, 0, 0]
MtrxA[21*cMtrxA+1..22*cMtrxA] :=[ -1, 0, 0, 1,0, 0, 0, 0, 0]
MtrxA[22*cMtrxA+1..23*cMtrxA] :=[ 0, 0, 0, 1,0, 0, -1 ,0 ,0]
MtrxA[23*cMtrxA+1..24*cMtrxA] :=[ 0, 0, 0, 0,0, 0, -1 ,0 ,0]

lMtrxN := 9
cMtrxN := 9
MtrxN[1..m]:=0

185

Apndice A. Cdigo Fonte da biblioteca RLIB

480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539

MtrxN[0*cMtrxN+1]
MtrxN[1*cMtrxN+2]
MtrxN[2*cMtrxN+3]
MtrxN[3*cMtrxN+4]
MtrxN[4*cMtrxN+5]
MtrxN[5*cMtrxN+6]
MtrxN[6*cMtrxN+7]
MtrxN[7*cMtrxN+8]
MtrxN[8*cMtrxN+9]

:=
:=
:=
:=
:=
:=
:=
:=
:=

N1
N2
N3
N1
N2
N3
N1
N2
N3

lMtrxV := 9
cMtrxV := 1
MtrxV[1..m]:= 0
MtrxV[0*cMtrxV+1]
MtrxV[1*cMtrxV+1]
MtrxV[2*cMtrxV+1]
MtrxV[3*cMtrxV+1]
MtrxV[4*cMtrxV+1]
MtrxV[5*cMtrxV+1]
MtrxV[6*cMtrxV+1]
MtrxV[7*cMtrxV+1]
MtrxV[8*cMtrxV+1]

:=
:=
:=
:=
:=
:=
:=
:=
:=

v1[1]
v2[1]
v3[1]
v1[2]
v2[2]
v3[2]
v1[3]
v2[3]
v3[3]

lMtrxO := 9
cMtrxO := 1
MtrxO[1..m]:=0
MtrxO[0*cMtrxO+1] :=
MtrxO[1*cMtrxO+1] :=
MtrxO[2*cMtrxO+1] :=
MtrxO[3*cMtrxO+1] :=
MtrxO[4*cMtrxO+1] :=
MtrxO[5*cMtrxO+1] :=
MtrxO[6*cMtrxO+1] := O7
MtrxO[7*cMtrxO+1] :=
MtrxO[8*cMtrxO+1] :=

O1
O2
O3
O4
O5
O6
O8
O9

lMtrxInsIn := 9
cMtrxInsIn := 1
MtrxInsIn[1..m]:=0
MtrxInsIn[0*cMtrxInsIn+1]
MtrxInsIn[1*cMtrxInsIn+1]
MtrxInsIn[2*cMtrxInsIn+1]
MtrxInsIn[3*cMtrxInsIn+1]
MtrxInsIn[4*cMtrxInsIn+1]
MtrxInsIn[5*cMtrxInsIn+1]
MtrxInsIn[6*cMtrxInsIn+1]
MtrxInsIn[7*cMtrxInsIn+1]
MtrxInsIn[8*cMtrxInsIn+1]

:=
:=
:=
:=
:=
:=
:=
:=
:=

dt := timestep

ins1
ins2
ins3
ins4
ins5
ins6
ins7
ins8
ins9

lMtrxP := 24,
cMtrxP := 24,
MtrxP[1..m]:=0
MtrxP[(1-1)*cMtrxP
MtrxP[(2-1)*cMtrxP
MtrxP[(3-1)*cMtrxP
MtrxP[(4-1)*cMtrxP
MtrxP[(5-1)*cMtrxP
MtrxP[(6-1)*cMtrxP

+
+
+
+
+
+

1]
2]
3]
4]
5]
6]

:=
:=
:=
:=
:=
:=

P1
P2
P3
P4
P5
P6

186

Apndice A. Cdigo Fonte da biblioteca RLIB

540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599

MtrxP[(7-1)*cMtrxP + 7] := P7
MtrxP[(8-1)*cMtrxP + 8] := P8
MtrxP[(9-1)*cMtrxP + 9] := P9
MtrxP[(10-1)*cMtrxP + 10] := P10
MtrxP[(11-1)*cMtrxP + 11] := P11
MtrxP[(12-1)*cMtrxP + 12] := P12
MtrxP[(13-1)*cMtrxP + 13] := P13
MtrxP[(14-1)*cMtrxP + 14] := P14
MtrxP[(15-1)*cMtrxP + 15] := P15
MtrxP[(16-1)*cMtrxP + 16] := P16
MtrxP[(17-1)*cMtrxP + 17] := P17
MtrxP[(18-1)*cMtrxP + 18] := P18
MtrxP[(19-1)*cMtrxP + 19] := P19
MtrxP[(20-1)*cMtrxP + 20] := P20
MtrxP[(21-1)*cMtrxP + 21] := P21
MtrxP[(22-1)*cMtrxP + 22] := P22
MtrxP[(23-1)*cMtrxP + 23] := P23
MtrxP[(24-1)*cMtrxP + 24] := P24
USE RNSMatrix as RNSM1
INPUT
deltaTime := dt,
lMatrixA := lMtrxA,
cMatrixA := cMtrxA,
MatrixA[1..m] := MtrxA[1..m]
lMP := lMtrxP,
cMP := cMtrxP,
MP[1..900]:= MtrxP[1..m]
lMatrixN := lMtrxN,
cMatrixN := cMtrxN,
MatrixN[1..m] := MtrxN[1..m]
lMatrixV := lMtrxV,
cMatrixV := cMtrxV,
MatrixV[1..m] := MtrxV[1..m]
lMatrixO := lMtrxO,
cMatrixO := cMtrxO,
MatrixO[1..m] := MtrxO[1..m]
lMatrixInsIn := lMtrxInsIn,
cMatrixInsIn := cMtrxInsIn,
MatrixInsIn[1..m] := MtrxInsIn[1..m]
OUTPUT
MtrxIns[1..m] := MatrixIns[1..m],
MtrxIs[1..m] := MatrixIs[1..m]
ENDUSE
ins1 := MtrxIns[1]
ins2 := MtrxIns[2]
ins3 := MtrxIns[3]
ins4 := MtrxIns[4]
ins5 := MtrxIns[5]
ins6 := MtrxIns[6]
ins7 := MtrxIns[7]
ins8 := MtrxIns[8]
ins9 := MtrxIns[9]

187

Apndice A. Cdigo Fonte da biblioteca RLIB

600
i1[1] := MtrxIs[1]
601
i2[1] := MtrxIs[2]
602
i3[1] := MtrxIs[3]
603
i1[2] := MtrxIs[4]
604
i2[2] := MtrxIs[5]
605
i3[2] := MtrxIs[6]
606
i1[3] := MtrxIs[7]
607
i2[3] := MtrxIs[8]
608
i3[3] := MtrxIs[9]
609
610
i1A:=i1[1]+(i2[2])-(i2[1]/2)-(i2[3]/2)-(i1[3]/2)-(i1[2]/2)
611
-io1A+(io2B)-(io2A/2)-(io2C/2)-(io1C/2)-(io1B/2)
612
613
i1B:=i1[2]+(i2[3])-(i2[2]/2)-(i2[1]/2)-(i1[1]/2)-(i1[3]/2)
614
-io1B+(io2C)-(io2B/2)-(io2A/2)-(io1A/2)-(io1C/2)
615
616
i1C:=i1[3]+(i2[1])-(i2[2]/2)-(i2[3]/2)-(i1[1]/2)-(i1[2]/2)
617
-io1C+(io2A)-(io2B/2)-(io2C/2)-(io1A/2)-(io1B/2)
618
619
i2A:=i2[1]
620
i2B:=i2[2]
621
i2C:=i2[3]
622
623
i3A:=i3[1]
624
i3B:=i3[2]
625
i3C:=i3[3]
626
627
v1A:=v1[1]
628
v2A:=v2[1]
629
v3A:=v3[1]
630
v1B:=v1[2]
631
v2B:=v2[2]
632
v3B:=v3[2]
633
v1C:=v1[3]
634
v2C:=v2[3]
635
v3C:=v3[3]
636
637
ENDEXEC
638 ENDMODEL
639 RECORD
640
RNS9.HN1 AS HN1
641
RNS9.BN1 AS BN1
642
RNS9.HN3 AS HN3
643
RNS9.BN3 AS BN3
644
RNS9.HN5 AS HN5
645
RNS9.BN5 AS BN5
646
RNS9.HN7 AS HN7
647
RNS9.BN7 AS BN7
648
RNS9.HN8 AS HN8
649
RNS9.BN8 AS BN8
650
RNS9.BN9 AS BN9
651
RNS9.HN9 AS HN9
652
RNS9.BN10 AS BN10
653
RNS9.HN10 AS HN10
654
RNS9.BN11 AS BN11
655
RNS9.HN11 AS HN11
656
RNS9.BN12 AS BN12
657
RNS9.HN12 AS HN12
658
RNS9.i1A AS i1A
659
RNS9.i2A AS i2A

188

Apndice A. Cdigo Fonte da biblioteca RLIB

660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719

RNS9.i3A AS i3A
RNS9.i1B AS i1B
RNS9.i2B AS i2B
RNS9.i3B AS i3B
RNS9.i1C AS i1C
RNS9.i2C AS i2C
RNS9.i3C AS i3C
RNS9.ins1 AS ins1
RNS9.ins2 AS ins2
RNS9.ins3 AS ins3
RNS9.ins4 AS ins4
RNS9.ins5 AS ins5
RNS9.ins6 AS ins6
RNS9.ins7 AS ins7
RNS9.ins8 AS ins8
RNS9.ins9 AS ins9
RNS9.v1A AS v1A
RNS9.v2A AS v2A
RNS9.v3A AS v3A
RNS9.v1B AS v1B
RNS9.v2B AS v2B
RNS9.v3B AS v3B
RNS9.v1C AS v1C
RNS9.v2C AS v2C
RNS9.v3C AS v3C
RNS9.io1A AS io1A
RNS9.io2A AS io2A
RNS9.io1B As io1B
RNS9.io2B As io2B
RNS9.io1C AS io1C
RNS9.io2C AS io2C
RNS9.v11p AS v11p
RNS9.v12p AS v12p
RNS9.v13p AS v13p
RNS9.v21p AS v21p
RNS9.v22p AS v22p
RNS9.v23p AS v23p
RNS9.O1 AS O1
RNS9.O2 AS O2
RNS9.O3 AS O3
RNS9.O4 AS O4
RNS9.O5 AS O5
RNS9.O6 AS O6
RNS9.O7 AS O7
RNS9.O8 AS O8
RNS9.O9 AS O9
RNS9.O10 AS O10
RNS9.O11 AS O11
RNS9.O12 AS O12
RNS9.O13 AS O13
RNS9.O14 AS O14
RNS9.O15 AS O15
RNS9.O16 AS O16
RNS9.O17 AS O17
RNS9.O18 AS O18
RNS9.O19 AS O19
RNS9.O20 AS O20
RNS9.O21 AS O21
RNS9.O22 AS O22
RNS9.O23 AS O23

189

Apndice A. Cdigo Fonte da biblioteca RLIB

720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768

190

RNS9.O24 AS O24
USE RNS9 AS RNS9
INPUT
v[1]:= M0001A
v[2]:= M0001B
v[3]:= M0001C
DATA
Aw:=
0.0158
Ay:=
0.0158
Ar:=
0.0158
N1:=
145.
N2:=
77.
N3:=
98.
Lw1:=
0.29
Lw2:=
0.154
Lw3:=
0.27
Ly:=
0.3608
Lr:=
0.8
Ld1:= 5.119E-5
Ld2:= 1.279E-4
Ld3:=
0.0108
OUTPUT
X0001A:=v3[1]
X0001B:=v3[2]
X0001C:=v3[3]
ENDUSE
ENDMODELS
C
1
2
3
4
5
6
7
8
C 345678901234567890123456789012345678901234567890123456789012345678901234567890
/BRANCH
C < n1 >< n2 ><ref1><ref2>< R >< L >< C >
C < n1 >< n2 ><ref1><ref2>< R >< A >< B ><Leng><><>0
X0002A
1.
0
X0002B
1.
0
X0002C
1.
0
/SOURCE
C < n 1><>< Ampl. >< Freq. ><Phase/T0><
A1
><
T1
>< TSTART >< TSTOP >
14X0002A
2449.5
60.
-1.
100.
14X0002B
2449.5
60.
-120.
-1.
100.
14X0002C
2449.5
60.
-240.
-1.
100.
/OUTPUT
BLANK MODELS
BLANK BRANCH
BLANK SWITCH
BLANK SOURCE
BLANK OUTPUT
BLANK PLOT
BEGIN NEW DATA CASE
BLANK

Cdigo Fonte A.11 Cdigo ATP para reator naturalmente saturado com 9 enrolamentos e
considerando efeitos de histerese

191

Referncias
ARAUJO, A. E. D.; NEVES, W. L. Clculos de transitrios eletromagnticos em sistemas de
energia. [S.l.]: Editora UFMG, 2005. Citado 2 vezes nas pginas 14 e 35.
BARBOSA, J. Modelagem e Anlise de Desempenho Transitrio e Dinmico de Compensadores
Estticos de Reativos Utilizando Reatores Saturados. 2009. Citado na pgina 16.
BARBOSA, J. et al. Proposta e validao de modelagem de reatores a ncleo saturado no
simulador atp. 2010. Citado na pgina 16.
BRASIL, D. d. O. C. do. Aplicao de reatores saturados em sistemas de transmisso. 1996.
Citado 2 vezes nas pginas 14 e 15.
COGO, J.; OLIVEIRA, A. de. Aplicao do mtodo de integrao trapezoidal em sistemas
eltricos. Seminrio de Pesquisa EFEI, 1983. Citado 2 vezes nas pginas 27 e 33.
DELFIN, C. G. Modelagem de reatores naturalemnte saturados usando circuito equivalente
magntico unificado em rotina da MODELS no ATP. Tese (Doutorado) Dissertao de
Mestrado. Universidade Federal de Pernambuco, 2014. Citado na pgina 15.
DUB, L. Users guide to models in atp. Bonneville Power Administration, 1996. Citado 7 vezes
nas pginas 22, 23, 24, 26, 59, 60 e 62.
FONTE, L. da. Desenvolvimento de Reatores com Saturao Natural para Aplicao em
Sistemas de Potncia, Dr. Tese (Doutorado) UFPE, Recife, Brazil, 2004. Citado na pgina
16.
FONTE, L. M. D. Reatores Saturados: Alguns Aspectos Operacionais e de Projeto. 1997.
Citado 3 vezes nas pginas 13, 16 e 89.
FREITAS, F. E. F. Aplicao srie de reatores naturalmente saturados em sistemas de potncia.
Universidade Federal de Pernambuco, 2010. Citado na pgina 16.
HERMANN, W. D. On modelling iron core nonlinearities. IEEE Transactions on Power Systems,
v. 8, n. 2, 1993. Citado 2 vezes nas pginas 16 e 29.
HORITA, M. A. B. Reatores controlados por saturao para compensao de reativos. Tese
(Doutorado) Universidade de So Paulo. Citado na pgina 30.
KRAUSE, P.; AMBLER, S.; FOX, J. ATP user manual. [S.l.], 1993. Citado 2 vezes nas pginas
18 e 21.
LIMA, T. Lies de lgebra linear, 2 Edio. [s.n.], 2014. (Ensino). ISBN 9789892608549.
Disponvel em: <https://books.google.com.br/books?id=qXaMCwAAQBAJ>. Citado na pgina
66.
LOBO, E. Guia prtico de engenharia de software. Universo dos Livros Editora. ISBN
9788578730369. Disponvel em: <https://books.google.com.br/books?id=QMkSI0jtLV8C>.
Citado 2 vezes nas pginas 64 e 71.

Referncias

192

MAIA, M. J. et al. Aplicao no sistema chesf da tecnologia de reatores saturados para limitao
de corrente de curto-circuito: Simulaes e ensaios. IV Simpsio Brasileiro de Sistemas
Eltricos, 2012. Citado na pgina 14.
PACHECO, J. et al. Projeto e anlise desempenho de um reator saturado de 570 kvar e 13,
8 kv para regulao de tenso. In: VII Conferncia Brasileira sobre Qualidade da Energia
EltricaCBQEE, Santos-SP, Brasil. [S.l.: s.n.], 2007. Citado na pgina 16.
PRESS, W. Numerical Recipes 3rd Edition: The Art of Scientific Computing.
Cambridge University Press, 2007. ISBN 9780521880688. Disponvel em:
<https://books.google.com.br/books?id=1aAOdzK3FegC>. Citado na pgina 69.
PRIKLER, L.; HOILDALEN, H. Atpdraw users manual. SINTEF Energy Research, 2002.
Citado 2 vezes nas pginas 19 e 21.
STRANG, G. Introduction to Linear Algebra. Wellesley-Cambridge Press, 2003. ISBN
9780961408893. Disponvel em: <https://books.google.com.br/books?id=Gv4pCVyoUVYC>.
Citado 2 vezes nas pginas 69 e 70.
SWIFT, G. W. Power transformer core behavior under transient conditions. IEEE Transactions
on Power Apparatus and Systems, IEEE, n. 5, p. 22062210, 1971. Citado na pgina 27.
TREFETHEN, L.; BAU, D. Numerical Linear Algebra. Society for Industrial and Applied
Mathematics (SIAM, 3600 Market Street, Floor 6, Philadelphia, PA 19104), 1997. ISBN
9780898719574. Disponvel em: <https://books.google.com.br/books?id=JaPtxOytY7kC>.
Citado na pgina 69.
TURING, A. M. Rounding-off errors in matrix processes. The Quarterly Journal of Mechanics
and Applied Mathematics, Oxford Univ Press, v. 1, n. 1, p. 287308, 1948. Citado na pgina 69.
WATSON JOS ARRILLAGA, L. U. K. N. Power Systems Electromagnetic Transients
Simulation. [S.l.]: Published by The Institution of Engineering and Technology, 2007. Citado 2
vezes nas pginas 28 e 29.

Potrebbero piacerti anche