Geometria_1DHeterogenea.hpp
Ir a la documentación de este archivo.
1 // Clase para generar una geometría heterogénea en una dimensión //
3 // //
4 // Análisis y Diseño y Programación: //
5 // //
6 // Nombre: Antonio Carrillo Ledesma //
7 // E-mail: acl@www.mmc.geofisica.unam.mx //
8 // Página: http://www.mmc.geofisica.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_1DHeterogenea__
31 #define __Geometria_1DHeterogenea__
32 
33 
34 #include "Geometria_1D.hpp"
35 
36 
38 #define IZQUIERDA -1
39 #define CENTRADA 0
40 #define DERECHA 1
41 
42 
44 #define DOMINIO_NM 1 // Dominio/(n^m)
45 #define DOMINIO_LOGe 2 // Dominio/Loge
46 #define DIMINIO_LOG10 3 // Dominio/Log10
47 
48 
49 
51 
58 {
59 private:
60 
62  int Tipo;
64  int Centrada;
66  int M;
67 
69  void dominioNM(void);
70 
72  void dominioLOGe(void);
73 
75  void dominioLOG10(void);
76 
77 
78 public:
79 
85  Geometria_1DHeterogenea(ldouble xi, ldouble xf, int part, int tp, double cen=0.0) : Geometria_1D()
86  {
87  Dominio.asigna(0,0,xi);
88  Dominio.asigna(1,0,xf);
89 
90  Particion.asigna(0,part);
91 
92  N_N = part;
93  N_E = part - 1;
94 
95  Tipo = tp;
96  Centrada = cen;
97  M = 2;
98 
100  }
101 
103 
107  Geometria_1DHeterogenea(MatrizDensa *dom, int part, int tp, double cen=0.0) : Geometria_1D()
108  {
109  dom->copia(&Dominio);
110 
111  Particion.asigna(0,part);
112 
113  N_N = part;
114  N_E = part - 1;
115 
116  Tipo = tp;
117  Centrada = cen;
118 
119  generaGeometria();
120  }
121 
122 
124 
126  {
127  leeGeometria(arch);
128  }
129 
130 
132  void generaGeometria(void);
133 
134 
135 
136 };
137 
142 #endif
Clase para generar una geometría en una dimensión
Definition: Geometria_1D.hpp:43
Geometria_1DHeterogenea(char *arch)
Constructor de la clase.
Definition: Geometria_1DHeterogenea.hpp:125
MatrizDensa Dominio
Dominio de la geometria.
Definition: Geometria.hpp:65
void generaGeometria(void)
Genera la geometria.
Definition: Geometria_1DHeterogenea.cpp:35
Geometria_1DHeterogenea(ldouble xi, ldouble xf, int part, int tp, double cen=0.0)
Definition: Geometria_1DHeterogenea.hpp:85
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
void asigna(const int col, const int val)
Asigna el valor val a la columna col.
Definition: VectorInt.hpp:202
Clase para generar una geometría heterogénea en una dimensión
Definition: Geometria_1DHeterogenea.hpp:57
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
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
Geometria_1DHeterogenea(MatrizDensa *dom, int part, int tp, double cen=0.0)
Constructor de la clase.
Definition: Geometria_1DHeterogenea.hpp:107
VectorInt Particion
Particion del dominio.
Definition: Geometria.hpp:68
int N_E
Numero de elementos.
Definition: Geometria.hpp:88