Clase principal Sistema_ecuaciones. Más...
#include <P_sistemaEc.h>
Métodos públicos | |
Sistema_ecuaciones (const char *) | |
Constructor de Sistema_ecuaciones . | |
~Sistema_ecuaciones () | |
Destructor de Sistema_ecuaciones . | |
int | getStiffness (int=0) |
void | print_global () |
int | rightSide () |
int | dirichletLin () |
int | aBinario () |
int | mkdir (const char *) |
const char * | enrrutar (const char *) |
Métodos privados | |
int | local_matrix (double, double, double, double, double, double, int) |
int | regiones () |
int | regNodos (int **, int, int) |
Atributos privados | |
int | N_N |
int | N_E |
int | N_ED |
float | frec |
double | VACIO |
double ** | pNode |
string | ruta |
map< unsigned, double > | permeabilidad |
map< unsigned, double > | conductividad |
list< int > | listaRegNodos0 |
list< int > | listaRegNodos1 |
Clase principal Sistema_ecuaciones.
La clase Sistema_ecuaciones contiene todas las funciones y variables que se utilizan para el programa pre.bin.
Sistema_ecuaciones::Sistema_ecuaciones | ( | const char * | entrada | ) |
Constructor de Sistema_ecuaciones .
El CONSTRUCTOR crea las cadenas de caracteres (ptrMesh, ptrConducti, etc) con las direcciones de los diferentes archivos de trabajo. Ademas se llama a la funcion getOrder() de de la clase G2f para crear archivos ordenados con los datos del archivo GMSH. Por ultimo se llama a la funcion regiones, que crear variables de tipo map globales con valores de permeabilidad y conductividad.
Sistema_ecuaciones::~Sistema_ecuaciones | ( | ) |
Destructor de Sistema_ecuaciones .
El destructor de Sistema_ecuaciones se encarga de eliminar de la memoria la matriz principal de rigidez y el vector de terminos independientes. Ademas lanza la orden de finalizar PetscFinalize().
int Sistema_ecuaciones::aBinario | ( | ) |
aBINARIO() crea un archivo binario especifico PETSC con el contenido de una matriz, respetando la estructura y el tipo. Asi mismo tambien se crea un binario con el contenido del vactor de terminos independientes. Estos archivos se crean para ser leidos posteriormente por solve.bin .
int Sistema_ecuaciones::dirichletLin | ( | ) |
DIRICHLET-LIN() aplica dirichlet en Pm_global a patir de valores en lineas. Esta funcion debe realizar un barrido sobre el archivo dirichlet.lin para encontrar encontrar las regiones donde existe de antemano un valor dado del potencial vector magnetico. Para ello busca los nodos de las regiones en el archivo g2f.edge, donde se encuentran los elementos de tipo linea. Una vez encontrados los nodos asociados fuerza al sistema de ecuaciones (Pm_global y Pv_righside) para asignar el valor adecuado al nodo correspondiente.
const char * Sistema_ecuaciones::enrrutar | ( | const char * | archivo | ) |
ENRUTAR() es una funcion auxiliar que coloca en ptrRutaArchivo la suma de las cadenas de caracteres ruta y *archivo.
int Sistema_ecuaciones::getStiffness | ( | int | verb = 0 |
) |
La funcion GET-STIFFNESS() utiliza los archivos GMSH ordenados por getOrder() para calcular la matriz global del sistema, tanto parte real como parte imaginaria. Para ello utiliza un buble que llama a la funcion local_matrix() que genera la matriz local de cada elemento, que luego es ensamblada en la matriz global. La funcion local_matrix() necesitara las coordenadas de los nodos que forman el elemento, asi como la region a la que pertenese el elemento.
int Sistema_ecuaciones::local_matrix | ( | double | xi, | |
double | yi, | |||
double | xj, | |||
double | yj, | |||
double | xk, | |||
double | yk, | |||
int | region | |||
) | [private] |
La funcion LOCAL_MATRIX() es mayormente el trozo de algoritmo que cambia al cambiar el campo de aplicacion del programa (magnetismo,distribucion termica, mecanica). En esta funcion esta reflejada en gran medida la funcion fisica que representa la base del programa Femsii. Se encarga de calcular la matriz local de cada elemento, aceptando la posicion de cada uno de los tres puntos, y propiedades aplicables a cada elemento/region. En nuestro caso la permeabilidad magnetica.
int Sistema_ecuaciones::mkdir | ( | const char * | ptrTemporal | ) |
MKDIR() crea la carpeta que viene en la cadena *ptrTemporal y notifica si lo consigue.
void Sistema_ecuaciones::print_global | ( | ) |
PRINT_GLOBAL() muestra en la salida estandar la matriz de rigidez global.
int Sistema_ecuaciones::regiones | ( | ) | [private] |
REGIONES() Se trata de que esta funcion llene las variables de tipo map "permeabilidad" y "conductividad" con los valores de conductividad y permeabilidad en cada region que da el usuario. Necesario para la funcion local_matrix() .
int Sistema_ecuaciones::rightSide | ( | ) |
RIGHT-SIDE() genera Pv_rightside a partir del archivo de densidades de corriente. En el archivo de densidades de corriente se nos proporcionara una lista de regiones y densidades correspondientes. Mediante el archivo g2f.ele se obtienen los nodos asociados a cada region. Tener en cuenta que el archivo de densidades de corriente incluye siempre parte real y parte imaginaria para cada region.
map<unsigned,double> Sistema_ecuaciones::conductividad [private] |
Variable tipo mapa para almacenar pares region-conductividad. Lo utiliza local_matrix()
float Sistema_ecuaciones::frec [private] |
variable que se encarga de almacenar la frecuencia de la densidad de corriente.
list<int> Sistema_ecuaciones::listaRegNodos0 [private] |
variable lista para almacenar la primera columna de los pares de nodos homologos. (en desarrollo)
list<int> Sistema_ecuaciones::listaRegNodos1 [private] |
variable lista para almacenar la segunda columna de los pares de nodos homologos. (en desarrollo)
int Sistema_ecuaciones::N_E [private] |
variable que se encarga de almacenar el numero de elementos.
int Sistema_ecuaciones::N_ED [private] |
variable que se encarga de almacenar el numero de elementos de contorno.
int Sistema_ecuaciones::N_N [private] |
variable que se encarga de almacenar el numero de nodos.
map<unsigned,double> Sistema_ecuaciones::permeabilidad [private] |
Variable tipo mapa para almacenar pares region-permeabilidad. Lo utiliza local_matrix().
double** Sistema_ecuaciones::pNode [private] |
variable que almacena los nodos del mallado, la utilizan getStiffness(), regiones() y archivoGmshPot().
double Sistema_ecuaciones::VACIO [private] |
variable que se encarga de almacenar el valor de la permeabilidad magnetica en el vacio.