Generación de las variables del sistema matricial Tx=W
[Creación del sistema general de ecuaciones lineales]

Diagrama de colaboración para Generación de las variables del sistema matricial Tx=W:
Conjunto de funciones que se encarga de preparar los elementos del sistema matricial Tx=W
. Más...

Funciones

Mat basicos::creaT ()
 Se encarga de dimensionar la matriz T del sistema a resolver. NOTA: La matriz T es una matriz sparse generada con las funciones de la librería PETCs.
void basicos::creaGC ()
 Se encarga de dimensionar las matrices del sistema transitorio G y C. NOTA: La matrices G y C son matrices sparse generadas con las funciones de la librería PETCs.
Vec basicos::creaW ()
 Se encarga de dimensionar el vector W para el sistema estacionario NOTA: El vector W es un vector generado con las funciones de la librería PETCs.
Vec basicos::creaWn ()
 Se encarga de dimensionar el vector Wn para el sistema transitorio NOTA: El vector Wn es un vector generado con las funciones de la librería PETCs.
Vec basicos::creaWn1 ()
 Se encarga de dimensionar el vector Wn1 para el sistema transitorio NOTA: El vector Wn1 es un vector generado con las funciones de la librería PETCs.
Vec basicos::creax_perm ()
 Se encarga de dimensionar el vector x para el sistema estacionario. En el se almacenan las soluciones del mismo. NOTA: El vector x_perm es un vector generado con las funciones de la librería PETCs.
Vec basicos::creax_trans ()
 Se encarga de dimensionar el vector x para el sistema transitorio. En el se almacenan las soluciones del mismo. NOTA: El vector x_trans es un vector generado con las funciones de la librería PETCs.
void dimensiona (int *num_line_total, basicos *DATOS)
 Se encarga de dimensionar la matriz T y el vector W para el posterior cálculo del sistema que nos proporcionará la solución del circuito. Tras calcular la dimensión de la misma se encarga de la creación de la T y W.
int num_nodos (int *num_line_total, basicos *p_DATOS)
 Calcula el número de nodos del circuito. Para ello realiza un barrido por la qtable MN buscando el mayor valor introducido.
int num_elemA2 (int *, basicos *)
 Calcula el número de elementos pertenecientes al grupo A2. Para ello realiza un barrido por la qtable MDG buscando los elementos del grupo A2.
int num_EA (int *num_line_total, basicos *p_DATOS)
 Calcula el número de elementos que se han considerado ecuación adicional. Para ello realiza un barrido por la qtable MDG sumando el número de ecuaciones adicionales existentes.

Descripción detallada

Conjunto de funciones que se encarga de preparar los elementos del sistema matricial Tx=W
.


Documentación de las funciones

void basicos::creaGC (  )  [inline, inherited]

Se encarga de dimensionar las matrices del sistema transitorio G y C. NOTA: La matrices G y C son matrices sparse generadas con las funciones de la librería PETCs.

Definición en la línea 110 del archivo estructuras.h.

00111 {
00112 MatCreateSeqAIJ(PETSC_COMM_SELF,filas(),columnas(),10,PETSC_NULL,&G);
00113 MatAssemblyBegin(G,MAT_FINAL_ASSEMBLY); MatAssemblyEnd(G,MAT_FINAL_ASSEMBLY);
00114 MatCreateSeqAIJ(PETSC_COMM_SELF,filas(),columnas(),10,PETSC_NULL,&C);
00115 MatAssemblyBegin(C,MAT_FINAL_ASSEMBLY); MatAssemblyEnd(C,MAT_FINAL_ASSEMBLY);
00116 }

Mat basicos::creaT (  )  [inline, inherited]

Se encarga de dimensionar la matriz T del sistema a resolver. NOTA: La matriz T es una matriz sparse generada con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a una matriz PETCs

Definición en la línea 100 del archivo estructuras.h.

00101 {
00102 MatCreateSeqAIJ(PETSC_COMM_SELF,filas(),columnas(),10,PETSC_NULL,&T);
00103 MatAssemblyBegin(T,MAT_FINAL_ASSEMBLY); MatAssemblyEnd(T,MAT_FINAL_ASSEMBLY);
00104 return T;
00105 }

Vec basicos::creaW (  )  [inline, inherited]

Se encarga de dimensionar el vector W para el sistema estacionario NOTA: El vector W es un vector generado con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a un vector PETCs

Definición en la línea 123 del archivo estructuras.h.

00124 {
00125 VecCreate(PETSC_COMM_SELF,&W);
00126 VecSetSizes(W,PETSC_DECIDE,filas());
00127 VecSetFromOptions(W);
00128 VecAssemblyBegin(W); VecAssemblyEnd(W);
00129 return W;       
00130 }

Vec basicos::creaWn (  )  [inline, inherited]

Se encarga de dimensionar el vector Wn para el sistema transitorio NOTA: El vector Wn es un vector generado con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a un vector PETCs

Definición en la línea 137 del archivo estructuras.h.

00138 {
00139 VecCreate(PETSC_COMM_SELF,&Wn);
00140 VecSetSizes(Wn,PETSC_DECIDE,filas());
00141 VecSetFromOptions(Wn);
00142 VecAssemblyBegin(Wn); VecAssemblyEnd(Wn);
00143 return Wn;
00144 }

Vec basicos::creaWn1 (  )  [inline, inherited]

Se encarga de dimensionar el vector Wn1 para el sistema transitorio NOTA: El vector Wn1 es un vector generado con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a un vector PETCs

Definición en la línea 151 del archivo estructuras.h.

00152 {
00153 VecCreate(PETSC_COMM_SELF,&Wn1);
00154 VecSetSizes(Wn1,PETSC_DECIDE,filas());
00155 VecSetFromOptions(Wn1);
00156 VecAssemblyBegin(Wn1); VecAssemblyEnd(Wn1);
00157 return Wn1;
00158 }

Vec basicos::creax_perm (  )  [inline, inherited]

Se encarga de dimensionar el vector x para el sistema estacionario. En el se almacenan las soluciones del mismo. NOTA: El vector x_perm es un vector generado con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a un vector PETCs

Definición en la línea 165 del archivo estructuras.h.

00166 {
00167 VecCreate(PETSC_COMM_SELF,&x_perm);
00168 VecSetSizes(x_perm,PETSC_DECIDE,filas());
00169 VecSetFromOptions(x_perm);
00170 VecAssemblyBegin(x_perm); VecAssemblyEnd(x_perm);
00171 return x_perm;  
00172 }

Vec basicos::creax_trans (  )  [inline, inherited]

Se encarga de dimensionar el vector x para el sistema transitorio. En el se almacenan las soluciones del mismo. NOTA: El vector x_trans es un vector generado con las funciones de la librería PETCs.

Devuelve:
Retorna un puntero a un vector PETCs

Definición en la línea 179 del archivo estructuras.h.

00180 {
00181 VecCreate(PETSC_COMM_SELF,&x_trans);
00182 VecSetSizes(x_trans,PETSC_DECIDE,filas());
00183 VecSetFromOptions(x_trans);
00184 VecAssemblyBegin(x_trans); VecAssemblyEnd(x_trans);
00185 return x_trans; 
00186 }

void dimensiona ( int *  num_line_total,
basicos DATOS 
)

Se encarga de dimensionar la matriz T y el vector W para el posterior cálculo del sistema que nos proporcionará la solución del circuito. Tras calcular la dimensión de la misma se encarga de la creación de la T y W.

Parámetros:
num_line_total Esta variable contiene el número de líneas del fichero *.spc cargado que coincide con el número de elementos del circuito
DATOS Puntero a estructura basicos
Ver también:
num_nodos(), num_elemA2(), num_EA()

Definición en la línea 11 del archivo estructuras.cpp.

00014 {
00015 int maxnodo,numA2, numEA;
00016 Mat T;  Vec W, Wn,Wn1; //       PetscScalar    v[1];
00017 maxnodo = num_nodos (num_line_total, p_DATOS);
00018 p_DATOS->nodos=maxnodo; 
00019 numA2 = num_elemA2 (num_line_total, p_DATOS);
00020 p_DATOS->A2=numA2;      
00021 numEA = num_EA (num_line_total, p_DATOS);
00022 p_DATOS->EA=numEA;
00023  /*esta instruccion me da el valor donde ir colocando 
00024 las EA que me encuentra al ir montando el sistema, 
00025 según aparezcan iré incrementando este valor en 1*/
00026 p_DATOS->apuntaEA=p_DATOS->situaEA();
00027 /*Esta instrucción me da el valor donde debe ir 
00028 el primer elemento que me encuentre perteneciente al grupo A2*/
00029 p_DATOS->apuntaA2=p_DATOS->situaA2();
00030 W=p_DATOS->creaW(); p_DATOS->W=W;
00031 T=p_DATOS->creaT(); p_DATOS->T=T;       
00032 //Creación de Wn para transitorio
00033 Wn=p_DATOS->creaWn(); p_DATOS->Wn=Wn;   
00034 Wn1=p_DATOS->creaWn1(); p_DATOS->Wn1=Wn1;
00035 }

int num_EA ( int *  num_line_total,
basicos p_DATOS 
)

Calcula el número de elementos que se han considerado ecuación adicional. Para ello realiza un barrido por la qtable MDG sumando el número de ecuaciones adicionales existentes.

Parámetros:
num_line_total Esta variable contiene el número de líneas del fichero *.spc cargado que coincide con el número de elementos del circuito
DATOS Puntero a estructura basicos
Ver también:
num_EA()
Devuelve:
Retorna el entero con el número de ecuaciones adicionales existentes en el circuito

Definición en la línea 82 del archivo estructuras.cpp.

00083 {
00084         bool result;
00085         QString var_string, var_string2;
00086         int var=0, var2=0, numEA=0, num_extra=0,total=0;
00087         for(int i=0;i<=*num_line_total;i++)
00088         {
00089                 //toma el valor EA para contar el nº de EA que tenemos
00090                 var_string=p_DATOS->tableMDG->text(i,2);
00091                 var= var_string.toInt(&result, 10);
00092                 //Cuenta el número de Fuentes de V dep de I las cuales introducen 2 EA
00093                 //Revisar si hay más elementos que introduzcan 2 EA
00094                 var_string2=p_DATOS->tableMDG->text(i,0);
00095                 var2= var_string2.toInt(&result, 10);
00096                 if(var>0){numEA=numEA+1;}
00097                 //if(var2==11||var2==7){num_extra=num_extra+1;}
00098         }
00099         total=numEA+num_extra;
00100         return total;
00101 }

int num_elemA2 ( int *  ,
basicos  
)

Calcula el número de elementos pertenecientes al grupo A2. Para ello realiza un barrido por la qtable MDG buscando los elementos del grupo A2.

Parámetros:
num_line_total Esta variable contiene el número de líneas del fichero *.spc cargado que coincide con el número de elementos del circuito
DATOS Puntero a estructura basicos
Ver también:
num_elemA2()
Devuelve:
Retorna el entero con el número elementos del grupo A2 existente en el circuito

Definición en la línea 64 del archivo estructuras.cpp.

00065 {
00066         bool result;
00067         QString var_string, var2_string;
00068         int var=0, var2=0, numA2=0;
00069         for(int i=0;i<*num_line_total;i++)
00070         {
00071                 var_string=p_DATOS->tableMDG->text(i,3);
00072                 var2_string=p_DATOS->tableMDG->text(i,0);
00073                 var= var_string.toInt(&result, 10);
00074                 var2=var2_string.toInt(&result, 10);            
00075                 if(var==2){numA2=numA2+1;}
00076                 if(var2==7 ||var2==11 || var2==12 || var2==15){numA2=numA2+1;}
00077         }
00078         
00079         return numA2;
00080 }

int num_nodos ( int *  num_line_total,
basicos p_DATOS 
)

Calcula el número de nodos del circuito. Para ello realiza un barrido por la qtable MN buscando el mayor valor introducido.

Parámetros:
num_line_total Esta variable contiene el número de líneas del fichero *.spc cargado que coincide con el número de elementos del circuito
DATOS Puntero a estructura basicos
Ver también:
num_nodos()
Devuelve:
Retorna el entero con el número de nodos existente en el circuito

Definición en la línea 47 del archivo estructuras.cpp.

00048 {
00049 bool result;
00050 QString var_string;
00051 int var=0, maxnodo=0;
00052 for(int i=0;i<*num_line_total;i++)
00053 {
00054         for(int j=0;j<4;j++)
00055         {       
00056         var_string=p_DATOS->tableMN->text(i,j);
00057         var=var_string.toInt(&result,10);
00058         if(var>maxnodo) {maxnodo=var;}
00059         }       
00060 }       
00061 return maxnodo;
00062 }


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