2. METHODOLOGY
2.4. Participants
Ya estudiado y desarrollado el m´etodo de diferencias finitas, se procede a la imple- mentaci´on computacional con el m´etodo de iteraci´on mediante el lenguaje de progra- maci´on de C++, esto se realizar´a para dos configuraciones espec´ıficas (las cuales se mencionar´an con mas detalle en el transcurso de este cap´ıtulo). Para desarrollar el problema de este trabajo se pens´o especificamente en dichas configuraciones ya que estas son, normalmente, las mas usadas en los cursos de electromagnet´ısmo.
A continuaci´on se explicara el desarrollo del programa.
1#i n c l u d e<i o s t r e a m> 2#i n c l u d e<f s t r e a m> 3#i n c l u d e<s t d i o . h> 4#i n c l u d e<s t d l i b . h> 5#i n c l u d e<math . h> 6 u s i n g namespace s t d; 7#d e f i n e m a x i t e r 500 8#d e f i n e N 100 9#d e f i n e h 0 . 0 8 10#d e f i n e t o l 1 . 0 e−13 24
25
En la primera parte del c´odigo se declaran librer´ıas de tipo contenedoras de lista
#iostream las cuales crean flujos de datos. Posteriormente se procede a definir las librer´ıas que se utilizar´an para este c´odigo y as´ı ir definiendo la estructura del programa, a continuaci´on se muestran las variables a definir:
define maxiter 50000: aqu´ı se define el n´umero de iteraciones que se desean realizar con el programa.
define N 100: aqu´ı se puede definir el n´umero de puntos en la red.
define tol 1.0e-13: se define el criterio de convergencia del programa en cuanto al n´umero de iteraciones que se van a realizar.
1 i n t i 1 , i 2 , j 1 , j 2 ; 2 o f s t r e a m OUT( ” d a t o s 2 . d a t ” ) ; 3 d o u b l e V[N ] [ N] , Ex [N ] [ N] , Ey [N ] [ N] , dmax , r , tmp , ex , ey ; 4 i 1 =40; 5 i 2 =60; 6 j 1 =35; 7 j 2 =65;
Debido al gran n´umero de iteraciones que el c´odigo computacional genera, es necesa- rio declarar la variables de tipo(double V[N][N], Ex[N][N], Ey[N][N]) para que el c´odigo almacene los datos que se generan para el campo el´ectrico y el potencial del
eje x, y ; seguidamente se debe pensar qu´e otras variables se deben definir para el programa, en este caso la ubicaci´on los electrodos y as´ı definir la configuraci´on que se realizar´a, ya que es importante conocer la localizaci´on de los electrodos para que el programa pueda realizar los c´alculos correspondienes.
La parte estructural del programa se presentar´a a continuaci´on por lo que se debe estudiar con mayor detenimiento.
1 {
2 i f ( ( ( i==i 1 )&&(j>=j 1 )&&(j<=j 2 ) )| |( ( j==j 3 )&&(i>=i 2 )&&(i<=i 3 ) ) ) 3 V[ i ] [ j ] = 1 0 0 ; 4 } 5 } 6 f o r( i n t n=1; n<m a x i t e r ; n++) 7 { 8 dmax = 0 . 0 ; 9 f o r( i n t i = 1 ; i < N; i ++) 10 f o r( i n t j = 1 ; j < N; j ++) 11 { 12 i f ( ( ( i != i 1 )| |( j<j 1 )| |( j>j 2 ) ) && ( ( j != j 3 )| |( i<i 2 )| |( i>i 3 ) ) ) 13 {
En la primera l´ınea del programa se tiene unif este es un condicional de instrucciones, es parte esencial del c´odigo, ya que le indica al programa en que parte se ubicar´an los electrodos; es decir la configuraci´on Figura 4.2 en el que est´an posicionados los electrodos, se tienen los valores asignados (i1, i2, j1, j2) en el eje correspondiente para
formar la configuraci´on, en este caso dos l´ıneas paralelas :
Figura 4.1: Configuraci´on de dos lineas paralelas (elelctrodos).
sabiendo las posiciones de los electrodos, se le indica al programa donde debe iterar, de modo que esto se declara en la siguiente l´ınea:
27
1 i f ( ( ( i != i 1 )| |( j<j 1 )| |( j>j 2 ) ) && ( ( j != j 3 )| |( i<i 2 )| |( i>i 3 ) ) )
El programa itera las veces que fueron declaradas llegando a un punto donde el sistema esta “ relajado ” es decir a cercandose al valor de toleracia definido por el progra- ma #define tol 1.0e-13 y obteniendo los puntos de la iteraci´on. As´ı mismo se realizar´a para la configuraci´on del pararrayos Figura 4.2
Figura 4.2: Configuraci´on de un pararrayos.
Las configuraciones mencionadas se implementar´an para el modelo de interfaz gr´afica donde el usurio podr´a observar el campo el´ectrico y el potencial; ya que con el m´etodo de iteraci´on prodr´a obtener dichos datos que ayudar´an a generar los graficos que se realizar´an en la interfaz gr´afica que se dise˜nar´a
Cap´ıtulo
5
MODELO DE INTERFAZ GR ´AFICA
Se elabor´o el modelo de interfaz gr´afica como recurso educativo donde su dise˜no y manejo del lenguaje gr´afico permita al usuario una mejor definici´on y visualizaci´on de un campo vectorial, espec´ıficamente, un campo electrost´atico. El modelo de interfaz gr´afica permite al usurio observar desde el campo el´ectrico hasta las l´ıneas equipoten- ciales, esto se podra realizar para dos configuraciones (lineas paralelas y pararrayos) de este modo podr´a interactuar con el valor de los idos que se encuentran en las configuraciones y asi se podra observar los cambios en el campo el´ectrico o las l´ıneas equipotenciales.
Para realizar el modelo de interfaz gr´afica es necesario un esquema de lo que en un principio se desea obtener de este modelo de interfaz Figura 5.1 ,ya que permitira darle un proceso acada elemento que se encontrar´a en la interfaz y sus ubicaciones dentro de la interfaz, dando as´ı una estructura al trabajo.
El esquema de la interfaz ayudar´a entender lo que contiene (botones y casillas) y donde se ubica cada cosa dentro de la interfaz. Llamaremos marco principal a toda la interfaz que contine, los botones y lienzo donde se graficar´a; seguidamente en la Figura 5.1 se observa el numero uno en rojo, este ser´a una de las ventanas dentro
29
Figura 5.1: Esquema del modelo de interfaz gr´afica.
del marco principal (ventana uno), luego se encuentra otra ventana con el numero dos (color rojo) que se encuentra enumerada en la figura Figura 5.1 con el numero dos; estas dos ventanas tiene dentro de ellas ciertos botones que permiten el funcio- namiento del modelo de interfaz, estos botones se conectan entre las dos ventanas (1 y 2) generando as´ı un graf´ıco en los lienzos.
Marco principal o ventana principal:
El marco o ventana pricipal es lo que contendr´a todos los botones, casillas y lienzos, por lo tanto se le debe generar una clase (las clases se declararan en mayuscula)
1 c l a s s VENTANA PRINCIPAL : p u b l i c TGMainFrame{ 2 p u b l i c :
3 VENTANA PRINCIPAL( c o n s t TGWindow ∗e s c r i t o r i o ,
4 U I n t t ancho , U I n t t a l t o ) : TGMainFrame ( e s c r i t o r i o , ancho , a l t o ) 5 }
La clase TGMainFRame es una subclase de TGWindow ; esta clase proporciona po- sici´on, dimensi´on y atributos a la interfaz graf´ıca, dando como argumento las dimen- siones el ancho (en pixeles) y altura de la interfaz; como se puede observar se declara en el codigo la clase VENTANA_PRINCIPAL se hace con el fin de tener mas claro el c´odigo para no confundir las clase o funciones y haciendo mas practica la programa- ci´on. La clase VENTANA_PRINCIPAL hereda un constructor que debe ser del mismo nombre de la clase, de modo que en el constructor se debe colocar los parametros del la interfaz.
Adecuaci´on de los botones:
Los botones y casillas que se encontrar´an en el modelo de interfaz, se mencionaran como: 1 TGTextButton ∗c o n f i g u r a c i o n L i n e a s P a r a l e l a s ; 2 TGTextButton ∗c o n f i g u r a c i o n P a r a r r a y o s ; 3 TGTextButton ∗d i b u j o E l e c t r o d o s ; 4 5 TGLabel ∗c o n f i g u r a c i o n ; 6 TGLabel ∗e1 ; 7 TGLabel ∗e2 ; 8 TGNumberEntry ∗v a l o r E l e c t r o d o 1 ; 9 TGNumberEntry ∗v a l o r E l e c t r o d o 2 ; 10 11 TGTextButton ∗d i b u j a r ; 12 TGTextButton ∗d i b u j a r 2 ;
Las acci´on de cada bot´on es fundamental pero solo se mencionar´a los botones que se implementaran, por ahora, ya que se bebe mencionar primero lo que va a contener la interfaz (botonos y casillas).
TGTextButton *configuracionLineasParalelas se encuentra en la primera l´ınea del c´odigo, el cual menciona el bot´on que se gregar´a y estar´a dentro de la VENTANA PRINCIPAL, dicho bot´on ser´a el principal para generar la configuraci´on de las l´ıneas paralelas, asi mismo se mencionr´a para el bot´on de pararrayos.
31
La orientaci´on de cada objeto dentro de la interfaz es importante, por lo tanto se iniciar´a con una de las ventanas segundarias Figura 5.1 ventana dos (el numero dos de color rojo ) ya que permitir´a hacer una programacion mas sencilla del modo en que se podr´a entender la implicaci´on de cada ventana, boton y casilla dentro del marco principal. 1 TGVerticalFrame ∗m a r c o d e n s i d a d V e r t i c a l= 2 new TGVerticalFrame ( m a r c o u n o M a r c o H o r i z o n t a l ) ; 3 marcounoMarcoHorizontal−>AddFrame 4 ( m a r c o d e n s i d a d V e r t i c a l , e x p a n d e r G e s t o r ) ; 5
6 TGGroupFrame ∗g r u p o d e n s i d a d= new TGGroupFrame
7 ( m a r c o d e n s i d a d V e r t i c a l , ” P o t e n c i a l de cada e l e c t r o d o : ” ) ; 8 m a r c o d e n s i d a d V e r t i c a l−>AddFrame
9 ( g r u p o d e n s i d a d , e x p a n d e r G e s t o r ) ;
La funci´on de TGVerticalFram le da una posici´on a la ventana dos y asi lo que se ingrese dentron de esta ventana estar´a en la posci´on que meciona la clase, la cual est´a verticalmente, si se desea horizontal seria TGHorizontalFrame la clases que est´an con asterisco (*) indican que se va a heredar un objeto, posteriormente se debe indicar que dicho objeto ir´a en la ventana dos. Ahora con la clase TGGroupFrame se colocarar para adicionar un cojunto de botones en las que se encontrarn los poten- ciales que el usurio ingresar, es decir los valores que van a obtener los electrodos y a su vez se le da un t´ıtulo al conjunto de botones que se encontrar´an el dicha ventana (Ventana dos de la Figura 5.1 ).
Ahora la linea que ayudaran para que le usurio ingrese los valores de los idos de cada configuraci´on sera:
1 v a l o r E l e c t r o d o 1= new TGNumberEntry ( m a r c o e l c t r o d o u n o H o r i z o n t a l ) ; 2 m a r c o e l c t r o d o u n o H o r i z o n t a l−>AddFrame ( v a l o r E l e c t r o d o 1 , c e n t r a r G e s t o r ) ; 3 v a l o r E l e c t r o d o 1−>SetNumber ( 1 0 . 0 ) ;
ingresara; as´ı se pueda conectar con la parte interna del met´odo de soluci´on y pueda generar el campo vectorial y las l´ıneas equipotenciales que el usuario desea dibujar, apartir de los valores que se ingresar´an.
Para generar los botones de las configurarciones que se realizar´an en el c´odigo sera apartir de las siguientes l´ıneas de c´odigo.
1 c o n f i g u r a c i o n L i n e a s P a r a l e l a s= new TGTextButton (
c o n f i g u r a c i o n M a r c o V e r t i c a l ,”& C o n f i g u r a c i o n L i n e a s P a r a l e l a s ” ) ;
2
3 c o n f i g u r a c i o n L i n e a s P a r a l e l a s−>Connect ( ” C l i c k e d ( ) ” , ”VENTANA PRINCIPAL” ,
t h i s , ” C o n f i g u r a c i o n S l o t P a r a l e l a s ( ) ” ) ;
4
5 c o n f i g u r a c i o n L i n e a s P a r a l e l a s−>Connect ( ” C l i c k e d ( ) ” , ”VENTANA PRINCIPAL” ,
t h i s , ” D i b u j a r C a m p o S l o t P a r a l e l a s ( ) ” ) ;
6 c o n f i g u r a c i o n M a r c o V e r t i c a l−> AddFrame ( c o n f i g u r a c i o n L i n e a s P a r a l e l a s ,
new TGLayoutHints ( kLHintsCenterX ,−5 ,−5 , 3 , 4 ) ) ;
La fuci´on de tipovoidque fue llamadaconf iguracionLineasP aralelasse implementa un bot´on dentro del marco vertical, n´umero tres de la Figura 5.2 que va estar co- nectado a la clase principal numero uno, llamada VENTANA_PRINCIPAL esto quiere decir que el bot´on se llamar´a Conf iguracionLineasP aralelas estar´a conectado con la ventana secundaria que se encuentra dentro de la ventana principal.
El funcionamiento de cada parte del c´odigo se da apatir del contenido de la ventana principal y donde se ubican las ventanas secundarias dentro de la principal y asi el modelo de interfaz se realice.
La agrupaci´on con las ventanas y botones mencionados en las l´ıneas del c´odigo an- teriormente se da apartir de la venta principal de color rojo Figura 5.2 la cual va a contener las ventanas donde se encuentran los botones que el usurio va a generar al momento de realizar las configuraciones, la ventana que va a conterner lo botones ser´a la de color azul con el n´umero dos Figura 5.2 esta venta dos que se encuentra dentro del marco principal que va a contener las dos subventas que contiene las confi-
33
Figura 5.2: Esquema de agrupaci´on dentro de la ventana principal.
guraciones y los valores de los potenciales, estas har´an una sola conecci´on que estar´an en la ventana color morado numero tres.La venta tres que se encuentra dentro de la ventana dos que conecta directamente hacia el lienzo cuatro y cinco, donde se dibu- jar´a el campo vectorial y potencial, la ventana principal aparte de conetener botones y casillas, de modo que genera los gr´aficos que el usuario desea visualizar.
Marco principal del modelo de interfaz.
Figura 5.3: Marco principal de la interfaz con sus respectivos botones y casillas.
En un inicio se tendr´a una primera parte de la interfaz Figura 5.3 donde se encuentra el marco pricipal con los repesctivos botones.En este primer marco no se encuentran el lienzo donde se dibujara las configuraciones ya que a un no se a implementado
dentro del marco principal, a lo que se debera hacer acontinuaci´on .
1 TRootEmbeddedCanvas ∗l i e n z o E m b e b i d o 1 = new TRootEmbeddedCanvas ( ”
l i e n z o E m b e b i d o 1 ” , m a r c o L i e n z o s H o r i z o n t a l , 3 5 0 , 4 0 0 ) ;
2 l i e n z o 1 = l i e n z o E m b e b i d o 1−>GetCanvas ( ) ;
3 m a r c o L i e n z o s H o r i z o n t a l−>AddFrame ( l i e n z o E m b e b i d o 1 , e x p a n d e r G e s t o r ) ; 4
5 TRootEmbeddedCanvas ∗l i e n z o E m b e b i d o 2 = new TRootEmbeddedCanvas ( ”
l i e n z o E m b e b i d o 1 ” , m a r c o L i e n z o s H o r i z o n t a l , 3 5 0 , 4 0 0 ) ;
6 l i e n z o 2 = l i e n z o E m b e b i d o 2−>GetCanvas ( ) ;
7 m a r c o L i e n z o s H o r i z o n t a l−>AddFrame ( l i e n z o E m b e b i d o 2 , e x p a n d e r G e s t o r ) ;
Para la visualizaci´on de las configuraciones se realizara dos lienzos en la interfaz( se nombran de derecha a izquierda) ya que se buscar´a visualizar el potencial y el campo electrico de cada una de las configuraciones.La clase TGCanvas es una clase que ge- nera una visualizacion para estar contenido dentro del marco principal pero esta clase contiene a TRootEmbeddedCanvas esta se aplicar´a en la interfaz, la indicamos que se adicionar´a *lienzoEmbebido1dentro del marco horizontal; lo mismo sucedera para el lienzo dos, de modo que se nombrara como *lienzoEmbebido2para as´ı hacer una divisi´on de dos lienzos Figura 5.4
35
El m´etodo de diferencias finitas ya aplicado en el c´odigo de la interfaz debe generar debe generar tanto el campo vectorial y el potencial, esto se hace con el fin de in- terpretar lo que sucede dentro de este tipo de configuraciones. El metodo genera un archivo .dat, este archivo ayuda a que se genere los gr´aficos tanto para el potencial, como para el campo el´ectrico. Ahora para generar el potencial en cada configuraci´on se iniciara creando un histograma a partir de los datos generados con el m´etodo ya mencionado.
1 FILE ∗ f = f o p e n ( ” D a t o s P a r a l e l o s . d at ” , ” r ” ) ; 2 i n t i =0;
3 w h i l e(f s c a n f( f , ”%l f ” ,& y d a t a 2 [ i ] ) == 1 ) i ++; 4 f o r ( i =0; i<100; ++i ) ydata−>F i l l ( y d a t a 2 [ i ] ) ;
De modo que se le dice al histograma que dibuje los datos obntenidos y dibuje el po- tencial, por lo tanto el histograma se llenara cada superfice con el potencial obtenido de cada dato obteniendo como resultado Figura 5.5. Para generar este tipo de histo-
Figura 5.5: Modelo de interfaz gr´afica (potencial).
gramas en 2D se recurre a la opcion deSU RF3 que dibuja histogramas de superficie de una manera elegante ya que tiene una vista de contornos la cual se necesita para
visualizar el potencial.
Figura 5.6: Modelo de interfaz gr´afica (potencial y campo vectorial).
Los resultados que se obtuvieron al momento de generar la interfas Figura 5.4, fue una mejor visulizaci´on de las dos configuraciones donde se aprecia mejor los vectores y el comportamiento de cada uno de estos, de modo que se puede observando deta- lladamente la direcci´on decada uno de estos dependiendo la configuraci´on y el valor que se le da a ido, esto hace posible estudiar el fen´omeno fisico y poder entenderlo ya que en muchas ocasiones no se puede dibujar en un tablero los vectores y los bordes de estas configuraciones.
Cap´ıtulo
6
CONCLUSIONES
El modelo de interfaz graf´ıca permiti´o visualizar los campos el´ectricos y su potencial, de manera que se puedan apreciar con mayor facilidad los contornos que se se dan en estos tipos de fen´omenos f´ısicos ya que al momento del estudio y ense˜nanza no resutan claros .
El estudio e implementaci´on computacional del m´etodo de diferencias finitas ayud´o a generar un desarrollo matema´atico que fue ajustado computacional- mente en un infraestructura de datos-ROOT, el cual no se habia creado hasta este momento.
La programaci´on que se desarrollo en ROOT-C++ permiti´on generar un recurso educativo para el estudio y ense˜nanza de los campos electrost´aticos y a partir de ah´ı observar el comportamiento de la configuraciones de dichos campos.
[1] Adr´es Mateus Vargas Hernandez. Preliminar Introducci´on a la IMplementaci´on de Inferaces Gr´afica de Usuario para la Simulaci´on de Fen´omenos F´ısicos en la Infrestructura de An´alisis de Datos ROOT. Fecha de Consulta: marzo 11 de 2015, en l´ınea edition, 2012.
[2] A. M. Vargas Hernandez. Preliminar Introducci´on a la Ipplementaci´on de Infer- faces Gr´aficas de Usuario para la Simulaci´on de Fen´omenos F´ısicos en la Infres- tructura de An´alisis de Datos ROOT. Fecha de Consulta: marzo 11 de 2015, en l´ınea edition, 2012.
[3] O. Matthew and S. Sadiku. Elementos de electromagnetismo. Oxford, Mexico, 764, 6th. edition, 2003.
[4] D. J. Griffiths. Introduction to Electrodynamics. Prentice Hall, New Jersey, 301- 306, 3rd. edition, 1999.
[5] S. Matthew and O. Sadiku. Numerical techniques in electromagnetics with MATLAB. CRC press, Texas, U.S.A., 2011.
[6] C. G. Lambe and C. J. Tranter.Ecuaciones diferenciales para ingenieros y cient´ıfi- cos. 1st. edition, 1964.