-
Notifications
You must be signed in to change notification settings - Fork 0
/
FonteDeTensaoSenoidal.cpp
67 lines (45 loc) · 1.82 KB
/
FonteDeTensaoSenoidal.cpp
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
60
61
62
63
64
65
66
67
#include "FonteDeTensaoSenoidal.h"
FonteDeTensaoSenoidal::FonteDeTensaoSenoidal(double novoNivelDC,double novaAmp,double novaFrequencia,double novoAtraso,double novoAmortecimento,double novaDefasagem,double novoNumeroDeCiclos,int A, int B)
{
a = A;
b = B;
amplitude = novaAmp;
defasagem = novaDefasagem;
amortecimento = novoAmortecimento;
numeroDeCiclos = novoNumeroDeCiclos;
frequencia = novaFrequencia;
nivelDC = novoNivelDC;
tipo = FONTEDETENSAOSENOIDALTYPE;
parar = atraso + numeroDeCiclos/frequencia;
}
bool FonteDeTensaoSenoidal::estampar(double matrizCircuito[][MAX_NOS + 2],int nVariaveis,vector<double> estadoAnterior)
{
matrizCircuito[a][indiceCorrente]+=1;
matrizCircuito[b][indiceCorrente]-=1;
matrizCircuito[indiceCorrente][a]-=1;
matrizCircuito[indiceCorrente][b]+=1;
if(passo*instante <= parar)
matrizCircuito[indiceCorrente][nVariaveis + 1]-=(nivelDC + amplitude*exp(-amortecimento*(instante*passo - atraso))*sin(2*PI*(frequencia*instante*passo- atraso) + PI*defasagem/180));
else
matrizCircuito[indiceCorrente][nVariaveis + 1]-=nivelDC;
// cout<<"tensao na fonte: "<<(nivelDC + amplitude*sin(2.0*PI*frequencia*instante*passo))<<endl;
return true;
}
bool FonteDeTensaoSenoidal::atualizarEstampa(double matrizCircuito[][MAX_NOS + 2],int nVariaveis)
{
// tensao[(int)instante] = amplitude*sin(2*PI *frequencia*instante*passo);
return true;
}
void FonteDeTensaoSenoidal::print(){
cout<<"Fonte senoidal amplitude "<<amplitude<<" e frequencia "<<frequencia<<" saindo de "<<a<<" entrando em" <<b<<endl;
}
int FonteDeTensaoSenoidal::aumentoVariaveis(int n)
{
indiceCorrente = n + 1;
// cout<<"indice da corrente da fonte d tensao"<<indiceCorrente<<endl;
return 1;
}
int FonteDeTensaoSenoidal::quantasCorrentes()
{
return 1;
}