#include <g2f.h>
Métodos públicos | |
G2f (const char *, const char *) | |
Constructor de G2f . | |
void | getOrder (short unsigned=16) |
Atributos privados | |
ifstream | fileIn |
ofstream | fileNode |
ofstream | fileEdge |
ofstream | fileEle |
ofstream | fileNodef |
ofstream | fileData |
unsigned | N_N |
unsigned | N_E |
Clase principal G2f.
La clase G2f se encarga de asumir un archivo de mallado Gmsh y extraer a partir de el archivos especificos para nodos, archivos de elementos interiores (3 nodos), archivo de elementos contorno (2 nodos) y un archivo extra con la cantidad de lineas de cada archivo. G2f es llamado por P_sistemaEc pues los archivos que genera G2f los utiliza directamente para crear la matriz de rigidez y el vector de terminos independientes.
NOTA suplementaria: Gmsh siempre genera nodos consecutivos unos de otros, esto es un problema a la hora de generar un sistema de ecuaciones. Por ellos existe G2f.
NOTA procedimiento general: -Se empieza a leer el archivo generado por gmsh. -Se ignoran los primeros 34 caracteres. -Se coloca en la variable N_N el numero de nodos. OJO, los nodos pueden estar desordenados.
-Con un bucle "for" se leen tantas lineas como nodos existan. Se lee del archivo origen el INDICE, coordenada X, coordenada Y y la ultima columna que se ignorara. Se escribe en el archivo destino el valor cardinal "i" del bucle, y los datos coordenada X, coordenada Y, y fin de linea. Se crea la variable tipo MAP para almacena pares (viejo nodo, nuevo nodo) -Se ignoran los siguientes 18 caracteres. -Se coloca en la variable N_E el numero de elementos. OJO, puesto que se han rebautizado los nodos con un nuevo indice, habra que cambiar los nodos asociados a cada elemento. -Con un bucle for se barren todos los elementos. Se lee el indice y el tipo de elemento. Segun el caso (mediante un switch) se trata cada elemento. En cada caso se leen los nodos y los atributos que se desean conseguir, el resto se pasa a ignore. En cada caso se escriben los datos en el archivo destino, respentando el indice original. Mediante la relacion map "newNode" se colocan los nuevos numeros de nodos que forman cada elemento. En las variables N_nf, N_edg, N_ele se van contando el numero de elementos de cada tipo.
-Se termina cada archivo con un "end" y se escribe el sumario en otro archivo.
G2f::G2f | ( | const char * | ruta, | |
const char * | temporal | |||
) |
Constructor de G2f .
El CONSTRUCTOR se encarga de crear todas las cadenas de caracteres que apuntan a los archivos que creara esta clase.
void G2f::getOrder | ( | short unsigned | precision = 16 |
) |
getOrder() representa la funcion principal de G2f, y es la que se encarga de leer el archivo .msh y extraer y separar en distintos archivos los datos necesarios para Femsii. Segun va leyendo el archivo va mallado, va escribiendo en el archivo adecuando asi que no necesita reservar memoria. Al final de cada archivo incluye una "F" de fin. Ademas de un archivo extra con el tamanhio de cada archivo generado. Si posteriormente el programa que lea los archivos encuentra que tras completar el numero de interaciones marcadas por el archivo extra, no se encuentra una F, el archivo estara corrupto.
ofstream G2f::fileData [private] |
Variable tipo flujo de salida utilizada para trabajar con el archivo que recuenta el numero de lineas de cada uno de los otros archivos generados por G2f.
ofstream G2f::fileEdge [private] |
Variable tipo flujo de salida utilizada para trabajar con el archivo de elementos de contorno.
ofstream G2f::fileEle [private] |
Variable tipo flujo de salida utilizada para trabajar con el archivo de elementos interiores.
ifstream G2f::fileIn [private] |
Variable tipo flujo de entrada utilizada para trabajar con el archivo de mallado generado por Gmsh.
ofstream G2f::fileNode [private] |
Variable tipo flujo de salida utilizada para trabajar con el archivo de nodos.
ofstream G2f::fileNodef [private] |
Variable tipo flujo de salida utilizada para trabajar con el archivo de elementos punto (finalmente no se ha utilizado en Femsii).
unsigned G2f::N_E [private] |
variable que se encarga de almacenar el numero de elementos.
unsigned G2f::N_N [private] |
variable que se encarga de almacenar el numero de nodos.