Geometria_2DTriangulos.hpp
Ir a la documentación de este archivo.
1 // Clase para generar una geometría homogénea en dos dimensiones usando triángulos //
3 // //
4 // Análisis y Diseño y Programación: //
5 // //
6 // Nombre: Antonio Carrillo Ledesma //
7 // E-mail: acl@www.mmc.igeofcu.unam.mx //
8 // Página: http://www.mmc.igeofcu.unam.mx/acl //
9 // //
10 // //
11 // Este programa es software libre. Puede redistribuirlo y/o modificarlo //
12 // bajo los términos de la Licencia Pública General de GNU según es //
13 // publicada por la Free Software Foundation, bien de la versión 2 de //
14 // dicha Licencia o bien (según su elección) de cualquier versión //
15 // posterior. //
16 // //
17 // Este programa se distribuye con la esperanza de que sea útil, pero SIN //
18 // NINGUNA GARANTÍA, incluso sin la garantía MERCANTIL implícita o sin //
19 // garantizar la CONVENIENCIA PARA UN PROPÓSITO PARTICULAR. Véase la //
20 // Licencia Pública General de GNU para más detalles. //
21 // //
22 // Debería haber recibido una copia de la Licencia Pública General junto //
23 // con este programa. Si no ha sido así, escriba a la Free Software //
24 // Foundation, Inc., en 675 Mass Ave, Cambridge, MA 02139, EEUU. //
25 // //
26 // //
28 
29 
30 #ifndef __Geometria_2DTriangulos__
31 #define __Geometria_2DTriangulos__
32 
33 #include "Geometria_2D.hpp"
34 
35 
37 
43 {
44 public:
45 
46 
48 
54  Geometria_2DTriangulos(ldouble x1, ldouble y1, ldouble x2, ldouble y2, int part_hor, int part_ver) : Geometria_2D()
55  {
56  inicializa(x1,y1,x2,y2,part_hor,part_ver);
57  }
58 
60 
61  Geometria_2DTriangulos(const char *arch) : Geometria_2D()
62  {
63  // Dimension 1D
64  DIM = 2;
65  // Numero de nodos por elemento
66  NNE = 3;
67  // Numero máximo de elementos que son soporte de un nodo
68  NMESN = 6;
69 
70  leeGeometria(arch);
71  }
72 
75  {
76  // Dimension 1D
77  DIM = 2;
78  // Numero de nodos por elemento
79  NNE = 3;
80  // Numero máximo de elementos que son soporte de un nodo
81  NMESN = 6;
82  }
83 
85 
91  void inicializa(ldouble x1, ldouble y1, ldouble x2, ldouble y2, int part_hor, int part_ver)
92  {
93  // Dimension
94  DIM = 2;
95  // Numero de nodos por elemento
96  NNE = 3;
97  // Numero máximo de elementos que son soporte de un nodo
98  NMESN = 6;
99  // Numero de tringulos
100  N_E = (part_hor * part_ver) * 2;
101  // Numero de nodos
102  N_N = (part_hor + 1) * (part_ver +1);
103 
104  // Almacena valores
105  Dominio.asigna(0,0,x1);
106  Dominio.asigna(0,1,y1);
107  Dominio.asigna(1,0,x2);
108  Dominio.asigna(1,1,y2);
109 
110  Particion.asigna(0,part_hor);
111  Particion.asigna(1,part_ver);
112 
113  generaGeometria();
114  }
115 
117 
120  void inicializa(MatrizDensa *dm, int part_hor, int part_ver)
121  {
122  // Dimension
123  DIM = 2;
124  // Numero de nodos por elemento
125  NNE = 3;
126  // Numero máximo de elementos que son soporte de un nodo
127  NMESN = 6;
128  // Numero de tringulos
129  N_E = (part_hor * part_ver) * 2;
130  // Numero de nodos
131  N_N = (part_hor + 1) * (part_ver +1);
132 
133  // Almacena valores
134  dm->copia(&Dominio);
135 
136  Particion.asigna(0,part_hor);
137  Particion.asigna(1,part_ver);
138 
139  generaGeometria();
140  }
141 
142 
144  void generaGeometria(void);
145 
146 
148 
149  ldouble areaElemento(int el);
150 
151 };
152 
157 #endif
int NNE
Numero de nodos por elemento.
Definition: Geometria.hpp:94
void inicializa(MatrizDensa *dm, int part_hor, int part_ver)
Inicializa los datos de la geometría
Definition: Geometria_2DTriangulos.hpp:120
MatrizDensa Dominio
Dominio de la geometria.
Definition: Geometria.hpp:65
int NMESN
Numero máximo de elementos que son soporte de un nodo.
Definition: Geometria.hpp:97
void generaGeometria(void)
Genera la geometria.
Definition: Geometria_2DTriangulos.cpp:34
ldouble areaElemento(int el)
Regresa el valor del área del elemento.
Definition: Geometria_2DTriangulos.cpp:92
Geometria_2DTriangulos(const char *arch)
Constructor de la clase.
Definition: Geometria_2DTriangulos.hpp:61
int DIM
Dimension a trabajar.
Definition: Geometria.hpp:91
virtual void copia(Matriz *a)
Copia el contenido de la matriz a la matriz pasada como parámetro.
Definition: Matriz.cpp:371
Clase para el trabajar con matrices densas de punto flotante.
Definition: MatrizDensa.hpp:44
Geometria_2DTriangulos(ldouble x1, ldouble y1, ldouble x2, ldouble y2, int part_hor, int part_ver)
Constructor de la clase.
Definition: Geometria_2DTriangulos.hpp:54
void asigna(const int col, const int val)
Asigna el valor val a la columna col.
Definition: VectorInt.hpp:202
Geometria_2DTriangulos(void)
Constructor de la clase.
Definition: Geometria_2DTriangulos.hpp:74
void asigna(const int ren, const int col, const ldouble val)
Asigna el valor indicado en el renglo y columna solicitado.
Definition: MatrizDensa.hpp:147
Clase base para generar una geometria en 2D.
Definition: Geometria_2D.hpp:45
int N_N
Numero de nodos.
Definition: Geometria.hpp:85
void leeGeometria(const char *arch)
Lee la geometria a un archivo.
Definition: Geometria.hpp:386
VectorInt Particion
Particion del dominio.
Definition: Geometria.hpp:68
int N_E
Numero de elementos.
Definition: Geometria.hpp:88
Clase para generar una geometría homogénea en dos dimensiones usando triángulos.
Definition: Geometria_2DTriangulos.hpp:42
void inicializa(ldouble x1, ldouble y1, ldouble x2, ldouble y2, int part_hor, int part_ver)
Inicializa los datos de la geometría
Definition: Geometria_2DTriangulos.hpp:91