|
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. | |
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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
| 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 }
1.5.6