#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 | dirichletPto () |
int | dirichletLin () |
int | paresHomologos () |
int | kelvin () |
int | aBinario () |
int | mkdir (const char *) |
int | enrutar (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 |
const char * | ruta |
char * | ptrMesh |
char * | ptrTemporal |
char * | ptrConducti |
char * | ptrPermeabi |
char * | ptrDensidadCorri |
char * | ptrDirichlet |
char * | ptrKelvin |
char * | ptrExtra |
char * | ptrOpEjecu |
char * | ptrRutaArchivo |
map< unsigned, double > | permeabilidad |
map< unsigned, double > | conductividad |
list< int > | listaRegNodos0 |
list< int > | listaRegNodos1 |
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.
int Sistema_ecuaciones::dirichletPto | ( | ) |
DIRICHLET-PTO() aplica dirichlet en Pm_global a patir de valores en puntos. ESTA funcion da problemas de rentidimiento. Por ahora se omite el uso de Dirichlet sobre una linea. CUIDADO: funcion prototipo con vistas a ser implementada en un futuro proyecto. No implemetnada en Femsii 1.0
int Sistema_ecuaciones::enrutar | ( | 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::kelvin | ( | ) |
Funcion para implementar las condiciones kelvin en Femsii atendiado a la salida de paresHomologos(). Cuidado, funcion prototipo EN DESARROLLO, no incluido en Femsii 1.0
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 está 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.
int Sistema_ecuaciones::paresHomologos | ( | ) |
PARES-HOMOLOGOS() Se trata de leer un archivo en el que hay un listado de regiones homologas. Con ello se debe crear un puntero doble con los nodos relacionados. El procedimiento es leer el archivo que relaciona las regiones y buscar en el archivo g2f.edge los nodos que perteneces a esa region. Cuidado, funcion prototipo EN DESARROLLO, no incluido en Femsii 1.0
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::regNodos | ( | int ** | ptrNodoEdge, | |
int | region, | |||
int | homo | |||
) | [private] |
REG-NODOS() es llamado varias veces por paresHomologos() busca los nodos de que pertenezcan a una region y los coloca en listaRegNodos0 en caso de que la llamada sea para los nodos de la region origen, y listaRegNodos1 si los nodos son de la region homologa. Cuidado, funcion prototipo EN DESARROLLO, no incluido en Femsii 1.0
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().
char * Sistema_ecuaciones::ptrConducti [private] |
Cadena de caracteres que almacenara la direccion del archivo que define las conductividades conductividad.reg .
char * Sistema_ecuaciones::ptrDensidadCorri [private] |
Cadena de caracteres que almacenara la direccion del archivo que define las densidades de corriente desidadCorri.reg .
char * Sistema_ecuaciones::ptrDirichlet [private] |
Cadena de caracteres que almacenara la direccion del archivo que define las condiciones dirichlet dirichlet.lin (especificar otro para dirichlet.pto).
char * Sistema_ecuaciones::ptrExtra [private] |
Cadena de caracteres que almacenara la direccion del archivo que define la frecuencia de la alimetnacion alterna, y el valor de la permeabilidad en el vacio que se va a utilizar.
char * Sistema_ecuaciones::ptrKelvin [private] |
Cadena de caracteres que almacenara la direccion del archivo que define las regiones homologas en caso de utilizar la transformacion de kelvin.
char* Sistema_ecuaciones::ptrMesh [private] |
Cadena de caracteres que almacenara la direccion del archivo de mallado mesh.msh.
char * Sistema_ecuaciones::ptrOpEjecu [private] |
Cadena de caracteres que almacenara la direccion del archivo que carga las opciones de ejecucion del resolutor de PETSc (ya no corresponde a pre.bin.
char * Sistema_ecuaciones::ptrPermeabi [private] |
Cadena de caracteres que almacenara la direccion del archivo que define las permeabilidades permeabilidad.reg .
char * Sistema_ecuaciones::ptrRutaArchivo [private] |
Cadena de caracteres comodin que utiliza la funcion enrutar() para escribir archivos en determinados directorios.
char * Sistema_ecuaciones::ptrTemporal [private] |
Cadena de caracteres que almacena la direccion de la carpeta temporal que se creara en la carpeta de proyecto.
const char* Sistema_ecuaciones::ruta [private] |
En esta variable se almacena el parametro introducido al ejecutar pre.bin, que debe ser la direccion de la carpeta de proyecto.
double Sistema_ecuaciones::VACIO [private] |
variable que se encarga de almacenar el valor de la permeabilidad magnetica en el vacio.