Ensamblaje sobre la Matriz T
[Ensamblaje los elementos en el sistema lineal]

Diagrama de colaboración para Ensamblaje sobre la Matriz T:

Funciones

void conductanciaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la conductancia.
void resistenciaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la resistencia.
void condensadorMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la condensador.
void bobinaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la bobina.
void fuenteVccMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente independiente de tensión.
void amplificadorMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T del amplificador operacional ideal.
void trafoMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T del transformador ideal.
void fuenteIdependVMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de corriente dependiente de tensión.
void fuenteVdependVMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de tensión dependiente de tensión.
void fuenteIdependIMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de corriente dependiente de corriente.
void fuenteVdependIMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de tensión dependiente de corriente.
void bobinaacopladaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de bobinas acopladas.
void interruptorMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T del interruptor.
void cuadripoloAdmitanciaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de admitancia.
void cuadripoloImpedanciaMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de impedancia.
void cuadripoloHibridoMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros híbridos.
void cuadripoloTrasmisionMatrizT (double *p_elemento, basicos *p_DATOS)
 Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de trasmisión.

Descripción detallada

Este grupo de funciones es el encargado de realizar el ensamblaje en la Matriz T.

Documentación de las funciones

void amplificadorMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T del amplificador operacional ideal.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 227 del archivo elementos.cpp.

00228 {
00229 PetscScalar Valor=p_elemento[9];
00230         //un nodo conectado al de referencia
00231         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0)
00232         {               
00233         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00234         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,Valor,ADD_VALUES);
00235         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00236         }
00237 
00238         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0)
00239         {
00240         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00241         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,Valor,ADD_VALUES);
00242         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00243         }
00244         
00245         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0)
00246         {
00247         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00248         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);                
00249         }
00250         
00251         //Dos nodos conectados al de referencia
00252         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0)
00253         {                       
00254         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);                
00255         }
00256 
00257         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0)
00258         {
00259         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00260         }       
00261 
00262         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0)
00263         {                                       
00264         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,Valor,ADD_VALUES);
00265         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00266         }       
00267 
00268         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0)
00269         {
00270         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00271         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00272         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,Valor,ADD_VALUES);
00273         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00274         }
00275 }

void bobinaacopladaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de bobinas acopladas.

Este elemento pertenece al grupo A2 por lo que siempre aporta dos ecuaciones adicionales

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1028 del archivo elementos.cpp.

01029 {
01030 PetscScalar ValorL1, ValorL2, ValorM;
01031 PetscImaginaryPart(ValorL1)=p_elemento[14];
01032 PetscImaginaryPart(ValorL2)=p_elemento[15];
01033 //PetscImaginaryPart(ValorM)=p_elemento[16]*sqrt(p_elemento[14]*p_elemento[15]);
01034 PetscImaginaryPart(ValorM)=p_elemento[16];
01035 if(p_elemento[2]==1)//Ver si no es EA
01036 {
01037 cout<<"\nError de concepto en inductor "<<p_elemento[0]<<" con ID relativo: "<<
01038 p_elemento[1]<<", este no puede ser EA, ya que su ensamblaje siempre es como si lo fuese"<<endl;        
01039 }
01040         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01041         {
01042         //primera EA    
01043         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01044         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01045         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01046         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01047         //segunda EA
01048         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01049         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01050         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01051         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01052         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
01053         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);              
01054         }
01055         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01056         {
01057         //primera EA
01058         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01059         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01060         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01061         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01062         //segunda EA
01063         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01064         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01065         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01066         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01067         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
01068         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01069         }
01070         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
01071         {
01072         //primera EA
01073         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01074         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01075         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01076         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01077         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01078         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01079         //segunda EA    
01080         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01081         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01082         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01083         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01084         }
01085         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
01086         {
01087         //primera EA
01088         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01089         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01090         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01091         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01092         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01093         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01094         //segunda EA
01095         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01096         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01097         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01098         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01099         }
01100         //dos nodos conectados al nodo de referencia
01101         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01102         {
01103         //primera EA
01104         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01105         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01106         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01107         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01108         //segunda EA
01109         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01110         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01111         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01112         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01113         }
01114 
01115         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
01116         {
01117         //primera EA    
01118         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01119         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01120         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01121         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01122         //segunda EA    
01123         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01124         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01125         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01126         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01127         }
01128 
01129         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
01130         {
01131         //primera EA    
01132         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01133         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01134         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01135         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01136         //segunda EA
01137         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01138         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01139         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01140         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01141         }
01142 
01143         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01144         {
01145         //primera EA
01146         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01147         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01148         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01149         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01150         //segunda EA    
01151         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01152         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01153         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01154         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01155         }
01156 
01157         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01158         {
01159         //primera EA    
01160         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01161         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01162         //segunda EA
01163         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01164         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01165         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01166         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01167         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
01168         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01169         }
01170 
01171         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01172         {
01173         //primera EA
01174         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01175         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01176         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01177         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01178         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01179         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01180         //segunda EA    
01181         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01182         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01183         }
01184 
01185         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01186         {
01187         //primera EA    
01188         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01189         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01190         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01191         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01192         //segunda EA    
01193         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01194         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01195         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01196         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);              
01197         }
01198         //tres nodos conectados al de referencia
01199         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
01200         {
01201         //primera EA
01202         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01203         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01204         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01205         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01206         //segunda EA    
01207         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01208         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);                    
01209         }
01210 
01211         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01212         {
01213         //primera EA    
01214         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01215         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01216         //segunda EA
01217         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01218         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01219         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01220         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
01221         }
01222 
01223         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01224         {
01225         //primera EA    
01226         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01227         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);       
01228         //segunda EA    
01229         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01230         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01231         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);    
01232         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01233         }
01234 
01235         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01236         {
01237         //primera EA
01238         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01239         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01240         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-ValorL1,ADD_VALUES);
01241         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-ValorM,ADD_VALUES);
01242         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01243         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01244         //segunda EA
01245         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01246         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01247         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-ValorM,ADD_VALUES);
01248         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-ValorL2,ADD_VALUES);
01249         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
01250         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01251         }
01252 }

void bobinaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la bobina.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 164 del archivo elementos.cpp.

00165 {
00166 PetscScalar Valor;
00167 PetscImaginaryPart(Valor)=p_elemento[7];
00168 if(p_elemento[2]==1)//Ver si no es EA
00169 {
00170 cout<<"\nError de concepto en inductor "<<p_elemento[0]<<" con ID relativo: "<<
00171 p_elemento[1]<<", este no puede ser EA, pertenece al grupo A2 por lo que es equivalente"<<endl; 
00172 }
00173 //PetscScalar Valor[0];
00174 //PetscImaginaryPart(Valor[0])=p_elemento[7];
00175 //cout<<"inductor: "<<Valor[0]<<endl;
00176 
00177         if(p_elemento[4]==0)
00178         {
00179         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00180         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00181         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00182         }
00183         if(p_elemento[5]==0)
00184         {
00185         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00186         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00187         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00188         }
00189         if(p_elemento[4]!=0&&p_elemento[5]!=0)
00190         {
00191         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00192         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00193         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00194         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00195         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00196         }
00197 }

void condensadorMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la condensador.

Este elemento pertenece al grupo A1 por lo que puede aportar una ecuación adicional si se desea obtener la intensidad que pasa por el

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 116 del archivo elementos.cpp.

00117 {
00118 PetscScalar Valor;
00119 PetscImaginaryPart(Valor)=p_elemento[7];
00120 cout<<"valor: "<<Valor<<endl;
00121 if(p_elemento[2]==0)//Ver si no es EA
00122 {
00123         if(p_elemento[4]==0)
00124         {
00125         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00126         }
00127         if(p_elemento[5]==0)
00128         {
00129         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,Valor,ADD_VALUES);       
00130         }
00131         if(p_elemento[4]!=0&&p_elemento[5]!=0)
00132         {       
00133         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,Valor,ADD_VALUES);
00134         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,Valor,ADD_VALUES);
00135         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-Valor,ADD_VALUES);
00136         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-Valor,ADD_VALUES);              
00137         }
00138 }
00139 else//Es EA
00140 {
00141         if(p_elemento[7]==0)
00142         {
00143         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[5]-1,-Valor,ADD_VALUES);
00144         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00145         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaEA,-1,ADD_VALUES);
00146         }
00147         if(p_elemento[5]==0)
00148         {
00149         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[4]-1,Valor,ADD_VALUES);
00150         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00151         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaEA,1,ADD_VALUES);
00152         }
00153         if(p_elemento[4]!=0&&p_elemento[5]!=0)
00154         {
00155         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[4]-1,Valor,ADD_VALUES);
00156         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[5]-1,-Valor,ADD_VALUES);
00157         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00158         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaEA,1,ADD_VALUES);
00159         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaEA,-1,ADD_VALUES);
00160         }
00161 }
00162 }       

void conductanciaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la conductancia.

Este elemento pertenece al grupo A1 por lo que puede aportar una ecuación adicional si se desea obtener la intensidad que pasa por el

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 39 del archivo elementos.cpp.

00040 {
00041 if(p_elemento[2]==0)//Ver si no es EA
00042 {
00043 cout<<"valores de la conductancia: "<<p_elemento[4]-1<<" "<<p_elemento[5]-1<<
00044 " "<<p_elemento[7]<<endl;
00045 if(p_elemento[4]==0)
00046 {MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,p_elemento[7],ADD_VALUES);}
00047 if(p_elemento[5]==0)
00048 {MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,p_elemento[7],ADD_VALUES);}
00049 if(p_elemento[4]!=0&&p_elemento[5]!=0)
00050 {       
00051 MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,p_elemento[7],ADD_VALUES);
00052 MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,p_elemento[7],ADD_VALUES);
00053 MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-p_elemento[7],ADD_VALUES);
00054 MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-p_elemento[7],ADD_VALUES);      
00055 }
00056 }
00057 else//Es EA
00058 {
00059         if(p_elemento[4]==0)
00060         {
00061         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[5]-1,-p_elemento[7],ADD_VALUES);
00062         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00063         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaEA,-1,ADD_VALUES);
00064         }
00065         if(p_elemento[5]==0)
00066         {
00067         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[4]-1,p_elemento[7],ADD_VALUES);
00068         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00069         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaEA,1,ADD_VALUES);
00070         }
00071         if(p_elemento[5]!=0&&p_elemento[4]!=0)
00072         {
00073         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[4]-1,p_elemento[7],ADD_VALUES);
00074         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_elemento[5]-1,-p_elemento[7],ADD_VALUES);
00075         MatSetValue(p_DATOS->T,p_DATOS->apuntaEA,p_DATOS->apuntaEA,-1,ADD_VALUES);
00076         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaEA,1,ADD_VALUES);
00077         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaEA,-1,ADD_VALUES);
00078         }
00079 //Incremento en uno el valor para poder poner otra EA si la hubiese
00080 p_DATOS->apuntaEA=p_DATOS->apuntaEA+1;
00081 }
00082 }

void cuadripoloAdmitanciaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de admitancia.

Este elemento pertenece al grupo A1 y no tiene posibilidad de aportar ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1284 del archivo elementos.cpp.

01285 {
01286 PetscScalar y11=p_elemento[14];
01287 PetscScalar y12=p_elemento[15];
01288 PetscScalar y21=p_elemento[16];
01289 PetscScalar y22=p_elemento[17];
01290 if(p_elemento[2]==1)//Ver si no es EA
01291 {
01292 cout<<"\nError de concepto en este tipo de cuatripolo "<<p_elemento[0]<<
01293 " con ID relativo: "<<p_elemento[1]<<
01294 ", este no puede ser EA, cuando se define según parámetros de admitancia"<<endl;      
01295 }
01296         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01297         {       
01298         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES);
01299         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-y12,ADD_VALUES);
01300         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,-y12,ADD_VALUES);        
01301         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-y21,ADD_VALUES);
01302         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);
01303         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-y22,ADD_VALUES);        
01304         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,y21,ADD_VALUES);
01305         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-y22,ADD_VALUES);
01306         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);         
01307         }
01308         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01309         {
01310         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES); 
01311         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,y12,ADD_VALUES);
01312         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-y11,ADD_VALUES);        
01313         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,y21,ADD_VALUES); 
01314         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);
01315         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-y22,ADD_VALUES);
01316         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-y21,ADD_VALUES);        
01317         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-y22,ADD_VALUES);
01318         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01319         }
01320         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
01321         {
01322         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES);
01323         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-y11,ADD_VALUES);        
01324         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-y11,ADD_VALUES);
01325         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-y11,ADD_VALUES);
01326         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES); 
01327         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,-y12,ADD_VALUES);        
01328         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-y21,ADD_VALUES);
01329         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,y21,ADD_VALUES); 
01330         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01331         }
01332         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
01333         {
01334         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES);
01335         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-y11,ADD_VALUES);
01336         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,y12,ADD_VALUES); 
01337         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-y11,ADD_VALUES);
01338         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES);
01339         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-y12,ADD_VALUES);        
01340         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,y21,ADD_VALUES);
01341         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-y21,ADD_VALUES);
01342         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);                 
01343         }
01344         //dos nodos conectados al nodo de referencia
01345         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01346         {
01347         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES); 
01348         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,y12,ADD_VALUES); 
01349         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,y21,ADD_VALUES); 
01350         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);         
01351         }
01352 
01353         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
01354         {               
01355         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES); 
01356         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,-y12,ADD_VALUES);        
01357         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,y21,ADD_VALUES); 
01358         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01359         }
01360 
01361         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
01362         {               
01363         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES);
01364         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-y12,ADD_VALUES);        
01365         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-y21,ADD_VALUES);
01366         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);                 
01367         }
01368 
01369         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01370         {
01371         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES); 
01372         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-y11,ADD_VALUES);        
01373         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-y21,ADD_VALUES);        
01374         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01375         }
01376 
01377         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01378         {               
01379         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);
01380         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-y22,ADD_VALUES);        
01381         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-y22,ADD_VALUES);
01382         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES); 
01383         }
01384 
01385         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01386         {
01387         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES);
01388         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-y11,ADD_VALUES);        
01389         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-y11,ADD_VALUES);
01390         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES); 
01391         }
01392         //tres nodos conectados al de referencia
01393         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01394         {               
01395         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES);         
01396         }
01397         
01398         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
01399         {
01400         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES);                         
01401         }
01402 
01403         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01404         {               
01405         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES); 
01406         }
01407 
01408         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01409         {               
01410         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01411         }
01412 
01413         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01414         {
01415         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[4]-1,y11,ADD_VALUES);
01416         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[5]-1,-y11,ADD_VALUES);
01417         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,y12,ADD_VALUES);
01418         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-y11,ADD_VALUES);
01419         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[4]-1,-y11,ADD_VALUES);
01420         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[5]-1,y11,ADD_VALUES);
01421         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-y12,ADD_VALUES);
01422         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,-y12,ADD_VALUES);
01423         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,y21,ADD_VALUES);
01424         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-y21,ADD_VALUES);
01425         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,y22,ADD_VALUES);
01426         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-y22,ADD_VALUES);
01427         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-y21,ADD_VALUES);
01428         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,y21,ADD_VALUES);
01429         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-y22,ADD_VALUES);
01430         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,y22,ADD_VALUES);
01431         }
01432 }

void cuadripoloHibridoMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros híbridos.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1627 del archivo elementos.cpp.

01628 {
01629 PetscScalar h11=p_elemento[14];
01630 PetscScalar h12=p_elemento[15];
01631 PetscScalar h21=p_elemento[16];
01632 PetscScalar h22=p_elemento[17];
01633 if(p_elemento[2]==1)//Ver si no es EA
01634 {
01635 cout<<"\nError de concepto en este tipo de cuatripolo "<<p_elemento[0]<<" con ID relativo: "<<p_elemento[1]<<", este no puede ser EA, cuando se define según parámetros de admitancia"<<endl; 
01636 }
01637         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01638         {                       
01639         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01640         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);
01641         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01642         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);            
01643         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01644         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);
01645         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-h22,ADD_VALUES);        
01646         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);       
01647         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-h22,ADD_VALUES);
01648         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01649         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);      
01650         }
01651         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01652         {
01653         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01654         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);
01655         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01656         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01657         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
01658         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);
01659         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-h22,ADD_VALUES);        
01660         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);       
01661         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-h22,ADD_VALUES);
01662         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01663         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);
01664         }
01665         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
01666         {
01667         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01668         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01669         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01670         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01671         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01672         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01673         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01674         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);
01675         }
01676         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
01677         {
01678         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01679         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01680         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);      
01681         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01682         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01683         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01684         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);         
01685         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);                               
01686         }
01687         //dos nodos conectados al nodo de referencia
01688         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01689         {
01690         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01691         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);      
01692         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01693         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
01694         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);         
01695         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);               
01696         }
01697 
01698         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
01699         {                               
01700         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01701         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01702         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01703         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01704         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01705         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);
01706         }
01707 
01708         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
01709         {               
01710         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01711         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);      
01712         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01713         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01714         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES); 
01715         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);                                       
01716         }
01717 
01718         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01719         {
01720         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01721         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01722         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01723         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
01724         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01725         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);
01726         }
01727 
01728         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01729         {                               
01730         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);
01731         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01732         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);            
01733         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);
01734         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-h22,ADD_VALUES);        
01735         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);       
01736         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-h22,ADD_VALUES);
01737         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01738         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);      
01739         }
01740 
01741         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01742         {
01743         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01744         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01745         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01746         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01747         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01748         }
01749         //tres nodos conectados al de referencia
01750         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01751         {                       
01752         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01753         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01754         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                        
01755         }
01756         
01757         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
01758         {
01759         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01760         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01761         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                                 
01762         }
01763 
01764         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01765         {       
01766         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);      
01767         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01768         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);
01769         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);               
01770         }
01771 
01772         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01773         {                               
01774         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01775         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01776         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01777         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);
01778         }
01779 
01780         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01781         {
01782         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01783         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01784         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-h12,ADD_VALUES);
01785         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,h12,ADD_VALUES);
01786         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-h11,ADD_VALUES);    
01787         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01788         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01789         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[6]-1,h22,ADD_VALUES);
01790         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[7]-1,-h22,ADD_VALUES);        
01791         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,h21,ADD_VALUES);       
01792         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[6]-1,-h22,ADD_VALUES);
01793         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[7]-1,h22,ADD_VALUES); 
01794         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-h21,ADD_VALUES);      
01795         }
01796 }

void cuadripoloImpedanciaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de impedancia.

Este elemento pertenece al grupo A2 por lo que siempre aporta dos ecuaciones adicionales

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1433 del archivo elementos.cpp.

01434 {
01435 PetscScalar z11=p_elemento[14];
01436 PetscScalar z12=p_elemento[15];
01437 PetscScalar z21=p_elemento[16];
01438 PetscScalar z22=p_elemento[17];
01439 if(p_elemento[2]==1)//Ver si no es EA
01440 {
01441 cout<<"\nError de concepto en este tipo de cuatripolo "<<p_elemento[0]<<
01442 " con ID relativo: "<<p_elemento[1]<<
01443 ", este no puede ser EA, cuando se define según parámetros de admitancia"<<endl;      
01444 }
01445         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01446         {               
01447         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01448         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01449         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01450         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01451         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01452         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01453         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);        
01454         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01455         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01456         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01457         }
01458         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01459         {
01460         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01461         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01462         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01463         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01464         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01465         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01466         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01467         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                 
01468         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01469         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01470         }
01471         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
01472         {
01473         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01474         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01475         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01476         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01477         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01478         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01479         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01480         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01481         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01482         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01483         }
01484         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
01485         {
01486         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01487         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01488         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01489         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01490         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01491         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01492         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01493         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01494         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01495         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);                       
01496         }
01497         //dos nodos conectados al nodo de referencia
01498         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01499         {
01500         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01501         
01502         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01503         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01504         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01505         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01506         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01507         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                 
01508         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01509         }
01510 
01511         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
01512         {                       
01513         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01514         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01515         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01516         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01517         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01518         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);        
01519         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01520         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01521         }
01522 
01523         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
01524         {                       
01525         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01526         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01527         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01528         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01529         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01530         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);        
01531         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01532         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);                               
01533         }
01534 
01535         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01536         {
01537         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01538         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01539         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01540         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01541         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01542         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01543         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                 
01544         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01545         }
01546 
01547         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01548         {                       
01549         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01550         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01551         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01552         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01553         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01554         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);                
01555         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01556         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01557         }
01558 
01559         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01560         {
01561         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01562         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01563         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01564         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01565         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01566         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01567         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01568         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01569         }
01570         //tres nodos conectados al de referencia
01571         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01572         {                       
01573         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01574         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01575         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01576         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01577         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);        
01578         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01579         }
01580         
01581         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
01582         {
01583         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01584         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01585         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01586         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01587         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01588         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                         
01589         }
01590 
01591         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01592         {                       
01593         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01594         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01595         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
01596         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01597         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);                
01598         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01599         }
01600 
01601         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01602         {                       
01603         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01604         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);  
01605         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01606         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01607         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);                
01608         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01609         }
01610 
01611         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01612         {
01613         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01614         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01615         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-z11,ADD_VALUES);
01616         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2+1,-z12,ADD_VALUES);
01617         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01618         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01619         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-z21,ADD_VALUES);
01620         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-z22,ADD_VALUES);
01621         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01622         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01623         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
01624         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
01625         }
01626 }

void cuadripoloTrasmisionMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de un cuadripolo definido por sus parámetros de trasmisión.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1797 del archivo elementos.cpp.

01798 {
01799 PetscScalar A=p_elemento[14];
01800 PetscScalar B=p_elemento[15];
01801 PetscScalar C=p_elemento[16];
01802 PetscScalar D=p_elemento[17];
01803 if(p_elemento[2]==1)//Ver si no es EA
01804 {
01805 cout<<"\nError de concepto en este tipo de cuatripolo "<<p_elemento[0]<<
01806 " con ID relativo: "<<p_elemento[1]<<
01807 ", este no puede ser EA, cuando se define según parámetros de admitancia"<<endl;      
01808 }
01809         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01810         {                       
01811         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01812         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);
01813         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01814         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01815         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-C,ADD_VALUES);
01816         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,C,ADD_VALUES);   
01817         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);
01818         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01819         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01820         }
01821         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01822         {
01823         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01824         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);
01825         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01826         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);
01827         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,C,ADD_VALUES);
01828         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-C,ADD_VALUES);  
01829         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);        
01830         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01831         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01832         }
01833         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
01834         {
01835         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01836         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01837         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01838         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01839         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-C,ADD_VALUES);  
01840         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);        
01841         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,C,ADD_VALUES);   
01842         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES); 
01843         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01844         }
01845         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
01846         {
01847         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01848         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01849         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);        
01850         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);
01851         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,C,ADD_VALUES);           
01852         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);
01853         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-C,ADD_VALUES);          
01854         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);
01855         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                                 
01856         }
01857         //dos nodos conectados al nodo de referencia
01858         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01859         {
01860         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01861         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);        
01862         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);
01863         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,C,ADD_VALUES);   
01864         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);        
01865         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
01866         }
01867 
01868         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
01869         {                                       
01870         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01871         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01872         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);
01873         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-C,ADD_VALUES);
01874         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,C,ADD_VALUES);   
01875         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);
01876         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01877         }
01878 
01879         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
01880         {       
01881         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01882         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);        
01883         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01884         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-C,ADD_VALUES);          
01885         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);
01886         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                                 
01887         }
01888 
01889         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01890         {
01891         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01892         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01893         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01894         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-C,ADD_VALUES);  
01895         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);        
01896         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01897         }
01898 
01899         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01900         {                                       
01901         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);
01902         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01903         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01904         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01905         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01906         }
01907 
01908         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01909         {
01910         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01911         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01912         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01913         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);                
01914         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES); 
01915         }
01916         //tres nodos conectados al de referencia
01917         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
01918         {                               
01919         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01920         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);               
01921         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);                         
01922         }
01923         
01924         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
01925         {
01926         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
01927         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);               
01928         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);                                        
01929         }
01930 
01931         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
01932         {               
01933         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);        
01934         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01935         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);                 
01936         }
01937 
01938         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01939         {                                       
01940         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01941         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);       
01942         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01943         }
01944 
01945         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01946         {
01947         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01948         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
01949         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-A,ADD_VALUES);
01950         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,A,ADD_VALUES);
01951         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,B,ADD_VALUES);
01952         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[6]-1,C,ADD_VALUES);
01953         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_elemento[7]-1,-C,ADD_VALUES);  
01954         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,-D,ADD_VALUES);
01955         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[6]-1,-C,ADD_VALUES);
01956         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_elemento[7]-1,C,ADD_VALUES);   
01957         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,D,ADD_VALUES);
01958         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01959         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01960         }
01961 }

void fuenteIdependIMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de corriente dependiente de corriente.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 731 del archivo elementos.cpp.

00732 {
00733 PetscScalar Valor=p_elemento[9];
00734 if(p_elemento[2]==1)//Ver si es EA
00735 {
00736 cout<<"Este elemento pertenece al grupo A2"<<endl;
00737 }
00738         
00739         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00740         {               
00741         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00742         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00743         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);
00744         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00745         }
00746 
00747         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00748         {
00749         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00750         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00751         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);
00752         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00753         }
00754         
00755         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00756         {
00757         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00758         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00759         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00760         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00761         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00762         }
00763 
00764         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00765         {
00766         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00767         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00768         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00769         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00770         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);     
00771         }
00772 
00773         //Dos nodos conectados al de referencia
00774         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00775         {       
00776         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);
00777         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00778         }
00779 
00780         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00781         {       
00782         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00783         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00784         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00785         }
00786 
00787         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00788         {       
00789         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00790         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00791         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);     
00792         }
00793 
00794         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00795         {
00796         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00797         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00798         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00799         }
00800 
00801         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00802         {
00803         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00804         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00805         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);     
00806         }
00807 
00808         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00809         {
00810         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00811         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00812         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00813         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00814         }
00815 
00816         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00817         {       
00818         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00819         }
00820 
00821         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00822         {       
00823         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);     
00824         }
00825 
00826         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00827         {       
00828         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00829         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00830         }
00831 
00832         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
00833         {
00834         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00835         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00836         }
00837 
00838         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00839         {
00840         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00841         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00842         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00843         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00844         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,Valor,ADD_VALUES);
00845         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);
00846         }
00847 }

void fuenteIdependVMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de corriente dependiente de tensión.

Este elemento pertenece al grupo A1 por lo que puede aportar una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 456 del archivo elementos.cpp.

00457 {
00458 PetscScalar Valor=p_elemento[9];
00459 if(p_elemento[2]==1)//Ver si es EA
00460 {
00461         //un nodo conectado al de referencia
00462         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00463         {       
00464         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00465         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00466         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00467         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00468         }
00469 
00470         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00471         {
00472         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);     
00473         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00474         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00475         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00476         }
00477         
00478         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00479         {
00480         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);
00481         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00482         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);              
00483         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00484         }
00485 
00486         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00487         {
00488         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);
00489         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00490         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00491         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00492         }
00493 
00494         //Dos nodos conectados al de referencia
00495         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00496         {       
00497         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00498         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00499         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00500         }
00501 
00502         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00503         {       
00504         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00505         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00506         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00507         }
00508 
00509         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00510         {
00511         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);     
00512         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00513         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00514         }
00515 
00516         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00517         {
00518         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);     
00519         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00520         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00521         }
00522 
00523         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00524         {       
00525         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00526         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00527         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00528         }
00529 
00530         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00531         {
00532         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);
00533         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00534         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);
00535         }
00536 
00537         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00538         {
00539         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);
00540         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
00541         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-1,ADD_VALUES);      
00542         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00543         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00544         }
00545 }
00546 if(p_elemento[2]==0)//No es EA
00547 {               
00548         //un terminal conectado al nodo de referencia
00549         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00550         {       
00551         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,Valor,ADD_VALUES);
00552         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-Valor,ADD_VALUES);              
00553         }
00554 
00555         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00556         {                       
00557         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-Valor,ADD_VALUES);
00558         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00559         }
00560 
00561         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00562         {       
00563         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,Valor,ADD_VALUES);               
00564         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-Valor,ADD_VALUES);              
00565         }
00566 
00567         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00568         {               
00569         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-Valor,ADD_VALUES);      
00570         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00571         }
00572 
00573         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00574         {       
00575         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,Valor,ADD_VALUES);
00576         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-Valor,ADD_VALUES);      
00577         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-Valor,ADD_VALUES);
00578         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00579         }
00580         
00581         //dos nodos conectados al nudo de referencia
00582         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00583         {               
00584         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00585         }
00586 
00587         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00588         {               
00589         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-Valor,ADD_VALUES);              
00590         }
00591 
00592         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00593         {                       
00594         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-Valor,ADD_VALUES);              
00595         }
00596         
00597         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00598         {       
00599         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,Valor,ADD_VALUES);               
00600         }
00601 
00602         //Ningún nodo es el de referencia
00603         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00604         {       
00605         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[4]-1,Valor,ADD_VALUES);
00606         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_elemento[5]-1,-Valor,ADD_VALUES);      
00607         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[4]-1,-Valor,ADD_VALUES);
00608         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_elemento[5]-1,Valor,ADD_VALUES);       
00609         }       
00610 }
00611 }

void fuenteVccMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente independiente de tensión.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional, puede definirse el tipo de excitación según lo indicado en la memoria principal de este proyecto

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 199 del archivo elementos.cpp.

00200 {
00201         if(p_elemento[2]!=0)//Ver si no es EA
00202         {
00203         cout<<"Error de concepto en fuente de tensión "<<p_elemento[0]<<
00204         " con ID relativo: "<<p_elemento[1]<<
00205         ", este siempre es A2."<<endl;  
00206         }
00207 
00208         if(p_elemento[4]==0)
00209         {
00210         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00211         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00212         }
00213         if(p_elemento[5]==0)
00214         {       
00215         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00216         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
00217         }
00218         if(p_elemento[4]!=0&&p_elemento[5]!=0)
00219         {       
00220         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00221         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00222         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00223         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
00224         }
00225 }

void fuenteVdependIMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de tensión dependiente de corriente.

Este elemento pertenece al grupo A2 por lo que siempre aporta dos ecuaciones adicionales

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 849 del archivo elementos.cpp.

00850 {
00851 PetscScalar Valor=p_elemento[9];
00852 
00853 if(p_elemento[2]==1)//Ver si no es EA
00854 {
00855 cout<<"\nError de concepto en inductor "<<p_elemento[0]<<
00856 " con ID relativo: "<<p_elemento[1]<<
00857 ", este no puede ser EA, ya que su ensamblaje siempre es como si lo fuese"<<endl;       
00858 }
00859         //un nodo conectado al de referencia
00860         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00861         {
00862         //primera EA    
00863         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00864         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00865         //segunda EA
00866         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
00867         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00868         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00869         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00870         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);              
00871         }
00872         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00873         {
00874         //primera EA
00875         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00876         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00877         //segunda EA
00878         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
00879         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00880         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00881         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00882         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00883         }
00884         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
00885         {
00886         //primera EA
00887         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00888         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00889         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00890         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00891         //segunda EA    
00892         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00893         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00894         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00895         }
00896         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
00897         {
00898         //primera EA
00899         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00900         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00901         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00902         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00903         //segunda EA
00904         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
00905         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00906         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
00907         }
00908 
00909         //dos nodos conectados al nodo de referencia
00910         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00911         {
00912         //primera EA
00913         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00914         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00915         //segunda EA
00916         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
00917         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00918         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
00919         }
00920 
00921         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00922         {
00923         //primera EA    
00924         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00925         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00926         //segunda EA    
00927         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00928         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00929         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00930         }
00931 
00932         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00933         {
00934         //primera EA    
00935         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00936         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00937         //segunda EA
00938         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
00939         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00940         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
00941         }
00942 
00943         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00944         {
00945         //primera EA
00946         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00947         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00948         //segunda EA    
00949         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00950         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00951         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00952         }
00953 
00954         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00955         {
00956         //primera EA    
00957         //segunda EA
00958         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
00959         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
00960         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
00961         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00962         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00963         }
00964 
00965         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00966         {
00967         //primera EA
00968         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00969         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00970         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00971         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00972         //segunda EA    
00973         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);                        
00974         }
00975         //tres nodos conectados al de referencia
00976         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00977         {
00978         //primera EA    
00979         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00980         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00981         //segunda EA    
00982         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);                
00983         }
00984 
00985         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
00986         {
00987         //primera EA
00988         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00989         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00990         //segunda EA    
00991         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);                        
00992         }
00993 
00994         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00995         {
00996         //primera EA    
00997         //segunda EA
00998         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);       
00999         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
01000         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);                       
01001         }
01002 
01003         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
01004         {
01005         //primera EA    
01006         //segunda EA    
01007         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01008         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);                
01009         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01010         }
01011 
01012         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
01013         {
01014         //primera EA
01015         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
01016         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
01017         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01018         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
01019         //segunda EA
01020         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[6]-1,1,ADD_VALUES);
01021         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_elemento[7]-1,-1,ADD_VALUES);
01022         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,-Valor,ADD_VALUES);        
01023         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
01024         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
01025         }
01026 }

void fuenteVdependVMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la fuente de tensión dependiente de tensión.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 613 del archivo elementos.cpp.

00614 {
00615 PetscScalar Valor=p_elemento[9];
00616 if(p_elemento[2]==1)//Ver si es EA
00617 {
00618         cout<<"Este elemento pertenece al grupo A2"<<endl;
00619 }
00620         //1 nodo conectados al de referencia
00621         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00622         {                       
00623         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);
00624         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);
00625         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00626         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00627         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00628         }
00629 
00630         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00631         {
00632         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);    
00633         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);
00634         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00635         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00636         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00637         }
00638         
00639         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00640         {
00641         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);
00642         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);     
00643         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00644         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00645         }
00646 
00647         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00648         {
00649         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);
00650         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);
00651         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);         
00652         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
00653         }
00654 
00655         //Dos nodos conectados al de referencia
00656         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00657         {               
00658         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);
00659         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00660         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00661         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00662         }
00663 
00664         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00665         {               
00666         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);     
00667         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00668         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00669         }
00670 
00671         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00672         {               
00673         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);
00674         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);         
00675         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
00676         }
00677 
00678         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00679         {
00680         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);    
00681         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00682         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00683         }
00684 
00685         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00686         {
00687         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);    
00688         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);         
00689         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00690         }
00691 
00692         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00693         {
00694         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);
00695         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);             
00696         }
00697         //3 nodos al de referencia
00698         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00699         {               
00700         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);                
00701         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00702         }
00703 
00704         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00705         {               
00706         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);         
00707         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
00708         }
00709 
00710         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00711         {       
00712         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);     
00713         }
00714 
00715         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
00716         {
00717         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);    
00718         }
00719 
00720         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00721         {
00722         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,-Valor,ADD_VALUES);
00723         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,Valor,ADD_VALUES);
00724         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,1,ADD_VALUES);
00725         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,-1,ADD_VALUES);        
00726         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00727         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00728         }
00729 }

void interruptorMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T del interruptor.

Este elemento pertenece al grupo A2 por lo que siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 1254 del archivo elementos.cpp.

01255 {
01256 PetscScalar Valor=p_elemento[7];
01257 PetscScalar Valor1=p_elemento[7]-1;
01258 if(p_elemento[2]==1)//Ver si es EA
01259 {
01260         cout<<"Este elemento pertenece al grupo A2"<<endl;
01261 }
01262         if(p_elemento[4]==0 && p_elemento[5]!=0)
01263         {       
01264         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
01265         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,Valor1,ADD_VALUES);  
01266         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);                
01267         }
01268         if(p_elemento[5]==0 && p_elemento[4]!=0)
01269         {
01270         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);     
01271         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,Valor1,ADD_VALUES);
01272         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);         
01273         }
01274         if(p_elemento[4]!=0&&p_elemento[5]!=0)
01275         {       
01276         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,Valor,ADD_VALUES);
01277         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-Valor,ADD_VALUES);
01278         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,Valor1,ADD_VALUES);
01279         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
01280         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
01281         }
01282 }

void resistenciaMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T de la resistencia.

Este elemento pertenece al grupo A2 por lo que puede siempre aporta una ecuación adicional

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 84 del archivo elementos.cpp.

00085 {
00086 if(p_elemento[2]==1)//Ver si no es EA
00087 {
00088 cout<<"Error de concepto en resistencia "<<p_elemento[0]<<
00089 " con ID relativo: "<<p_elemento[1]<<
00090 ", esta no puede ser EA, pertenece al grupo A2 por lo que es equivalente"<<endl;        
00091 }
00092 
00093         if(p_elemento[4]==0 && p_elemento[5]!=0)
00094         {
00095         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00096         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-p_elemento[7],ADD_VALUES);
00097         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00098         }
00099         if(p_elemento[5]==0 && p_elemento[4]!=0)
00100         {
00101         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00102         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-p_elemento[7],ADD_VALUES);
00103         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00104         }
00105         if(p_elemento[4]!=0&&p_elemento[5]!=0)
00106         {       
00107         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00108         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00109         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_DATOS->apuntaA2,-p_elemento[7],ADD_VALUES);
00110         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00111         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);        
00112         }
00113 
00114 }       

void trafoMatrizT ( double *  p_elemento,
basicos p_DATOS 
)

Esta Función se encarga del ensamblaje de valores en la matriz T del transformador ideal.

Este elemento pertenece al grupo A2 por lo que siempre aporta dos ecuaciones adicionales

Parámetros:
elemento Puntero a vector con los valores de definición del elemento
p_DATOS Puntero a estructura basicos

Definición en la línea 277 del archivo elementos.cpp.

00278 {
00279 PetscScalar Valor=p_elemento[9];
00280 PetscScalar Valorinver=1/p_elemento[9];
00281 if(p_elemento[2]==1)//Ver si no es EA
00282 {
00283 cout<<"\nError de concepto en inductor "<<p_elemento[0]<<
00284 " con ID relativo: "<<p_elemento[1]<<
00285 ", este no puede ser EA, ya que su ensamblaje siempre es como si lo fuese"<<endl;       
00286 }
00287         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00288         {
00289         //primera EA    
00290         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00291         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);
00292         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00293         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00294         //segunda EA
00295         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00296         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00297         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00298         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);              
00299         }
00300         if(p_elemento[5]==0 && p_elemento[4]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00301         {
00302         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00303         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);
00304         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00305         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00306         //segunda EA
00307         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00308         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00309         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00310         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00311         }
00312         if(p_elemento[6]==0 && p_elemento[5]!=0 && p_elemento[4]!=0 && p_elemento[7]!=0)
00313         {
00314         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00315         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00316         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00317         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00318         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00319         //segunda EA
00320         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00321         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES); 
00322         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00323         }
00324         if(p_elemento[7]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[4]!=0)
00325         {
00326         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00327         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00328         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);            
00329         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00330         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00331         //segunda EA
00332         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00333         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00334         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
00335         }
00336         //dos nodos conectados al nodo de referencia
00337         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00338         {
00339         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00340         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);            
00341         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00342         //segunda EA
00343         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00344         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00345         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
00346         }
00347 
00348         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]!=0)
00349         {       
00350         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00351         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00352         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00353         //segunda EA
00354         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00355         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES); 
00356         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00357         }
00358 
00359         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]==0)
00360         {       
00361         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00362         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);    
00363         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00364         //segunda EA
00365         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00366         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00367         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);               
00368         }
00369 
00370         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00371         {
00372         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES); 
00373         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00374         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00375         //segunda EA
00376         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00377         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES); 
00378         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);
00379         }
00380 
00381         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00382         {       
00383         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);
00384         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00385         //segunda EA
00386         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00387         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00388         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00389         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00390         }
00391 
00392         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00393         {
00394         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00395         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00396         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00397         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00398         //segunda EA
00399         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00400         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);         
00401         }
00402         //tres nodos conectados al de referencia
00403         if(p_elemento[4]==0 && p_elemento[5]!=0 && p_elemento[6]==0 && p_elemento[7]==0)
00404         {       
00405         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);        
00406         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00407         //segunda EA
00408         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00409         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);                 
00410         }
00411         
00412         if(p_elemento[4]!=0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]==0)
00413         {
00414         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);         
00415         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES); 
00416         //segunda EA
00417         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00418         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);                         
00419         }
00420 
00421         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]!=0 && p_elemento[7]==0)
00422         {       
00423         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);    
00424         //segunda EA
00425         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00426         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00427         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);       
00428         }
00429 
00430         if(p_elemento[4]==0 && p_elemento[5]==0 && p_elemento[6]==0 && p_elemento[7]!=0)
00431         {       
00432         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);             
00433         //segunda EA
00434         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00435         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES); 
00436         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00437         }
00438 
00439         if(p_elemento[4]!=0 && p_elemento[5]!=0 && p_elemento[6]!=0 && p_elemento[7]!=0)
00440         {
00441         //primera EA
00442         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[4]-1,1,ADD_VALUES);
00443         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[5]-1,-1,ADD_VALUES);
00444         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[6]-1,-Valor,ADD_VALUES);
00445         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2,p_elemento[7]-1,Valor,ADD_VALUES);     
00446         MatSetValue(p_DATOS->T,p_elemento[4]-1,p_DATOS->apuntaA2,1,ADD_VALUES);
00447         MatSetValue(p_DATOS->T,p_elemento[5]-1,p_DATOS->apuntaA2,-1,ADD_VALUES);
00448         //segunda EA
00449         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2,1,ADD_VALUES);
00450         MatSetValue(p_DATOS->T,p_DATOS->apuntaA2+1,p_DATOS->apuntaA2+1,-Valorinver,ADD_VALUES);
00451         MatSetValue(p_DATOS->T,p_elemento[6]-1,p_DATOS->apuntaA2+1,1,ADD_VALUES);
00452         MatSetValue(p_DATOS->T,p_elemento[7]-1,p_DATOS->apuntaA2+1,-1,ADD_VALUES);      
00453         }
00454 }


Generado el Wed Sep 2 16:04:56 2009 para Software de Análisis de Circuitos Lineales mediante Métodos Avanzados de Resolución para Uso Docente. Manual de Código Fuente por  doxygen 1.5.6