Como fase inicial del desarrollo del código se considera el entorno en el cual se hace la simulación, en este caso la geometría y los materiales que definen el modelo. Se debe tener en cuenta que al ser un análisis de propagación de onda unidimensional sólo se requieren una reducida cantidad de propiedades de los materiales, y además la definición de la geometría se resume en inicio y fin de cada “vector” de material. A continuación, se listan las propiedades y características requeridas para cada capa:
• Espesor • Módulo de elasticidad • Densidad • Esfuerzo de falla • Velocidad de onda • Posición inicial
Dentro de las anteriores hay unas definidas a partir de la relación entre otras propiedades, tal como la velocidad de onda que depende del módulo de elasticidad y la densidad. De este mismo modo, hay otras características que no se listan por que sería redundante, sin embargo, son importantes para el análisis realizado, tal como la posición final del vector que se conoce a partir de la posición inicial y el espesor.
Conociendo la información que debe estar recopilada para la geometría y material de la capa, se continua con la escritura del código que permita almacenar y manipular
32
eficientemente dicha información. Teniendo en cuenta que se programa en torno al concepto de orientación de objetos, se aprovecha el mismo para generar bancos de información que permitan obtener cualquier propiedad o característica de una capa simplemente llamando un elemento de este tipo. Así pues, se considera la clase1 Material en la cual se inicializan todas las variables contenidas para cada capa, y las respectivas funciones de inicialización.
Con la clase Material creada se procede a implementar una clase de jerarquía inferior llamada capa, en la cual se pretenden almacenar todos los objetos (capas) de tipo material. De esta manera se construye la subclase2 capa que se formula como una clase matricial. El concepto de matriz de objetos es muy útil para el almacenamiento de datos, sobre todo cuando se trata de el manejo de múltiples capas y además múltiples características. Así pues, la clase capa es una matriz de objetos tipo capa, concepto que va a simplificar más adelante la creación de los objetos y la identificación de la posición de estos.
Con la clase capa definida se procede a escribir las líneas de código que permitan crear diferentes capas de materiales específicos. Para esto se construye la función CrearCapa en la cual a partir de parámetros de entrada se genera un objeto de tipo capa. Como se menciona anteriormente no es necesario ingresar como parámetros todas las características pertenecientes a la capa, ya que la misma función las interrelaciona y calcula las propiedades dependientes. A continuación, se presenta una línea de código para la creación de una capa:
capas = capa(1); %crea la matriz de objetos tipo capa
capas = CrearCapa(capas,5,206.8*10^9,7850,1069*10^6, 0); %Crea la bala
Se tiene como inicialización la función capa3 que crea una matriz nombrada capas con una única celda de tipo capa (matriz de 1x1). A partir de dicha matriz se procede a crear el primer objeto de análisis. En este punto es importante resaltar que, tal como se aprecia en
1 Clase: Conjunto de objetos que comparten características y comportamiento, en este caso todos los objetos
de tipo material son las capas. [10]
2 Subclase: Una subclase hereda los comportamientos directamente de otra clase, en este caso la clase capa
simplemente está heredando las características de la clase Material. [10]
33
el código, la bala o FSP es creada en el modelo como la capa inicial con el fin de analizar la propagación de las ondas en esta tal como lo hace Mines en su trabajo.
En el código se evidencia que se tienen como parámetros de entrada a la función CrearCapa en su orden: la matriz de capas, el espesor de la capa (mm), su módulo de elasticidad (Pa), la densidad (kg/m3), el esfuerzo de falla (Pa) y para finalizar la posición inicial de la capa (mm). La función de generación de capas está diseñada de tal manera que a medida que se ejecuta adiciona elementos a la matriz de capas sin remover las creadas previamente. Así pues, el usuario tiene la facilidad de introducir capas a como de lugar sin necesidad de organizarlas o preocuparse por la cantidad previa, tal como se muestra en las siguientes líneas de código:
capas = CrearCapa(capas,2.5,8.5*10^9,1783,200*10^6,5); %Crea primera capa
capas = CrearCapa(capas,17.8,310*10^9,3500,3000*10^6,7.5); %Crea segunda capa
Se denota que el único parámetro del cual debe tenerse consideración al crear nuevas capas es el de posición inicial, ya que a medida que se crean nuevas se debe conocer cuál es la posición final de vector de la capa anterior. Sin embargo, eso se logra con un cálculo sencillo de posición inicial sumada al espesor de la capa anterior, o mejor aún recurriendo a la propiedad de final de capa propia del objeto.
Como consideración final se tiene que las capas se van organizando a medida que se crean en un vector fila, es decir, si se crean tras capas contando la bala se obtiene que la matriz que almacena la información tendría un tamaño de 1x3, de esta manera para ubicar una capa se recurre al posicionamiento matricial sencillo (por ejemplo, la primera capa sería la posición capas(1,2)). En la clase Material se presentan todas las propiedades a las cuales es posible acceder a través de la notación de objetos, tal como la siguiente línea en la cual se modifica el espesor de la tercera capa:
34