mathematica mef o fem 22

69
Método de los Elementos Finitos 5.1 Introducción Este capítulo presenta una serie de funciones para el análisis de elementos finitos. Interpolación En primer lugar, de una y dos dimensiones Lagrange y Hermite (forma) se introducen las funciones y métodos sistemáticos para la generación de estos tipos de elementos que se discuten con muchos ejemplos. Usted puede diseñar los elementos con las características deseadas mediante la manipulación de los términos de sus funciones básicas. Puede generar funciones de interpolación para muchos elementos típicos, junto con otros menos convencionales. A continuación, puede crear representaciones gráficas de estas funciones de interpolación. Por último, una serie de útiles funciones auxiliares también están incluidas. Usted puede resolver muchos problemas prácticos mediante un procedimiento de elementos finitos para problemas de elasticidad avión. Desde el análisis de elementos finitos, es una ciencia aplicada, adquiriendo experiencia en el análisis es extremadamente crucial para la eficacia de los resultados. La mejor manera de lograr esto mediante el examen de los pasos intermedios del análisis de cuidado y la realización de muchos de los cálculos de carga y diferentes condiciones de mallado. Este capítulo presenta las funciones para el análisis y los pasos intermedios del análisis, junto con herramientas gráficas para la representación clara de los resultados. Generación de la malla con la formulación isoparamétricas también se discute con muchos ejemplos. 5.2 unidimensional funciones de forma 5.2.1 Observaciones generales Con la Element1D paquete, usted puede calcular las funciones de forma de tipo de elementos tridimensionales de Lagrange-hermitiana y uno. Realizar la interpolación de Hermite por ajuste de una curva a la vez una (variable de campo) de la ordenada y la pendiente (la derivada con respecto a las coordenadas locales) puntos en ganglionar. El más simple de interpolación hermitiana es entre dos puntos nodales en la que la variable del campo y sus derivados, con respecto a las coordenadas locales, son conocidos. Mecánica Estructural contiene la función HermiteElement1D para el cálculo de las funciones de interpolación hermitiana de elementos de una dimensión. Interpolación de Lagrange es un caso especial de la interpolación de Hermite. En la interpolación de Lagrange, se obtiene mediante el ajuste de funciones de forma de una curva para las variables de campo de un problema sin importar sus derivados. 5.2.2 Elementos de Lagrange Generar la más simple función de interpolación hermitiana, , Que es lineal, unidimensional, y sólo tiene dos puntos nodales. Las funciones de orden cero hermitiana interpolación también se conocen como elementos de Lagrange. Dado que para los elementos de Lagrange no requieren la continuidad de la pendiente, el orden de la interpolación es cero, es decir, n = 0. La longitud del elemento es L y el coordenadas x en este ejemplo. En [1]: = En [2]: = En [3]: = sfun0 HermiteElement1D = [{0, L}, 0, x] Fuera [3] = Para trazar la ubicación de los nodos de este elemento simple, se utiliza el ElementPlot función.

Upload: ime-montserrat-jimenez-tizapantzi

Post on 30-Jun-2015

439 views

Category:

Documents


9 download

TRANSCRIPT

Método de los Elementos Finitos 5.1 Introducción Este capítulo presenta una serie de funciones para el análisis de elementos finitos. Interpolación En primer lugar, de una y dos dimensiones Lagrange y Hermite (forma) se introducen las funciones y métodos sistemáticos para la generación de estos tipos de elementos que se discuten con muchos ejemplos. Usted puede diseñar los elementos con las características deseadas mediante la manipulación de los términos de sus funciones básicas. Puede generar funciones de interpolación para muchos elementos típicos, junto con otros menos convencionales. A continuación, puede crear representaciones gráficas de estas funciones de interpolación. Por último, una serie de útiles funciones auxiliares también están incluidas. Usted puede resolver muchos problemas prácticos mediante un procedimiento de elementos finitos para problemas de elasticidad avión. Desde el análisis de elementos finitos, es una ciencia aplicada, adquiriendo experiencia en el análisis es extremadamente crucial para la eficacia de los resultados. La mejor manera de lograr esto mediante el examen de los pasos intermedios del análisis de cuidado y la realización de muchos de los cálculos de carga y diferentes condiciones de mallado. Este capítulo presenta las funciones para el análisis y los pasos intermedios del análisis, junto con herramientas gráficas para la representación clara de los resultados. Generación de la malla con la formulación isoparamétricas también se discute con muchos ejemplos. 5.2 unidimensional funciones de forma 5.2.1 Observaciones generales Con la Element1D paquete, usted puede calcular las funciones de forma de tipo de elementos tridimensionales de Lagrange-hermitiana y uno. Realizar la interpolación de Hermite por ajuste de una curva a la vez una (variable de campo) de la ordenada y la pendiente (la derivada con respecto a las coordenadas locales) puntos en ganglionar. El más simple de interpolación hermitiana es entre dos puntos nodales en la que la variable del campo y sus derivados, con respecto a las coordenadas locales, son conocidos. Mecánica Estructural contiene la función HermiteElement1D para el cálculo de las funciones de interpolación hermitiana de elementos de una dimensión. Interpolación de Lagrange es un caso especial de la interpolación de Hermite. En la interpolación de Lagrange, se obtiene mediante el ajuste de funciones de forma de una curva para las variables de campo de un problema sin importar sus derivados.

5.2.2 Elementos de Lagrange

Generar la más simple función de interpolación hermitiana, , Que es lineal, unidimensional, y sólo tiene dos puntos nodales. Las funciones de orden cero hermitiana interpolación también se conocen como elementos de Lagrange. Dado que para los elementos de Lagrange no requieren la continuidad de la pendiente, el orden de la interpolación es cero, es decir, n = 0. La longitud del elemento es L y el coordenadas x en este ejemplo.

En [1]: =

En [2]: = En [3]: = sfun0 HermiteElement1D = [{0, L}, 0, x]

Fuera [3] = Para trazar la ubicación de los nodos de este elemento simple, se utiliza el ElementPlot función.

Pantalla de dos nodos en (x, y) = (0, 0) y (1, 0) con L = 1. En [4]: = $ DefaultFont = {"Correo", 7}; ElementPlot [{{{0,0}, {1,0}}}, PlotRange-> {{1,2}, Todos}, True> Marco-];

Por definición, si el valor de una de estas funciones de interpolación es cero en un punto nodal, los valores de las otras funciones debe ser de 1 en el mismo nodo. Parcela estas dos funciones de interpolación para ver si se cumple esta condición para L = 1 en x = 0 y x = L. En [6]: = Parcela [Evaluar [sfun0/.L-> 1], {x, 0,1}, PlotRange-> {{0,1}, {0,1}}, Frame-> verdadero];

Del mismo modo, usted puede generar fácilmente de orden superior funciones de interpolación para los elementos con más nodos. Por ejemplo, calcular las funciones de interpolación cuadrática para equidistantes puntos nodales en (0, L / 2, L). En [7]: = sfun0 HermiteElement1D = [{0, L / 2, L}, 0, x]

A cabo [7] = Mostrar tres nodos en (x, y) = (0, 0), (1 / 2, 0) y (1, 0) para L = 1. Esto muestra la ubicación de los nodos. En [8]: = ElementPlot [{{{0,0}, {1 / 2, 0}, {1,0}}} PlotRange-> {{1,2}, Todos} Frame->] Es cierto;

Esta muestra estas funciones de interpolación cuadrática gráficamente. En [9]: = Parcela [Evaluar [sfun0/.L-> 1], {x, 0,1}, PlotRange-> {{0,1}, {}} -0.25,1, Frame->] Es cierto;

5.2.3 Elementos de Hermite

Un elemento provee de elementos de continuidad entre la variable de campo (por ejemplo, el desplazamiento, temperatura, etc) y sus primeras derivadas (por ejemplo, el estrés, el flujo de calor, etc) en los puntos nodales. En los elementos de Lagrange de tipo, la solución para una variable de campo que se aproxima es continua entre los elementos, sin embargo, sus derivados no son necesariamente continua. Por lo tanto, sólo de segundo orden las ecuaciones en derivadas parciales se puede aproximar por funciones de interpolación de Lagrange de tipo. En muchos casos, puede encontrarse con ecuaciones diferenciales de orden superior. Por ejemplo, en la teoría de la viga de Euler-Bernoulli, la deformación transversal de la viga se rige por una ecuación diferencial de cuarto orden. Por lo tanto, la continuidad de la primera derivada de la solución (pendiente de la curva elástica en el problema de la viga) entre los elementos es necesaria ya que la pendiente es una variable principal, y el momento es la fuerza generalizada que corresponde a esta vertiente.

Usted puede obtener fácilmente las funciones más simples hermitiana de dos puntos de interpolación para elementos (es decir, n = 1) como en el ejemplo siguiente. Las dos primeras funciones en la producción corresponden a la continuidad de la variable de campo (de orden cero), y los dos últimos son para el orden de la continuidad en primer lugar, es decir, los derivados, con respecto a los de coordenadas locales x, son continuas para estos funciones de interpolación. En [10]: = sfun HermiteElement1D = [{0, L}, 1, x]

A cabo [10] = La primera función es la unidad en x = 0, y la segunda función es la unidad en x = L. Todas las demás funciones son cero, ya que las dos primeras funciones de la producción por encima de proporcionar el elemento de

continuidad entre la variable de campo, a saber, continuidad, mientras que los últimos dos son para la continuidad de la primera derivada de la variable de campo. En [11]: = sfun/.x-> 0

A cabo [11] = En [12]: = sfun/.x-> L

A cabo [12] = Del mismo modo, los derivados de las funciones de interpolación con respecto a las coordenadas x son la unidad en sus puntos nodales correspondientes. En [13]: =] D [sfun, x / 0. X->

A cabo [13] = En [14]: = D [sfun, x] / L. X->

A cabo [14] = Ver claramente el comportamiento de las funciones de interpolación cuando las parcelas. La longitud del elemento de L es igual a 1 en los siguientes gráficos. En primer lugar, generar un gráfico para el elemento de continuidad de la interpolación de funciones-otras cosas, que se dan en las dos primeras entradas de la sfun lista. En [15]: = Parcela [Evaluar [sfun [[1]] /. L-> 1], {x, 0,1} PlotRange-> {{0,1}, {0,1}}, Frame->] Es cierto;

En [16]: = C1 = sfun [[1]] / 1. L->

A cabo [16] = Como era de esperar (por definición), las funciones de interpolación de primer orden y sus derivados con respecto a los de coordenadas locales disminuyen en los puntos nodales. Esta es la trama de las funciones de interpolación de primer orden.

En [17]: Parcela [Evaluar [sfun [[2]] /. = L-> 1], {x, 0,1}, PlotRange-> {{0,1}, {}} -0.25,0.25, Frame->] Es cierto;

Sin embargo, sus derivados con respecto a x se comportan como funciones de interpolación. En [18]: Parcela [Evaluar [D [sfun [2]], [x] /. = L-> 1], {x, 0,1}, PlotRange-> {{0,1}, {}} -0.5,1, Frame->] Es cierto;

Del mismo modo, el gráfico siguiente se muestra que los derivados de funciones de interpolación en los puntos nodales son iguales a cero. En [19]: Parcela [Evaluar [D [sfun [1]], [x] /. = L-> 1], {x, 0,1}, PlotRange-> {{0,1}, {-2,2}}, Frame->] Es cierto;

5.3 Bidimensional funciones de forma 5.3.1 Observaciones generales Puede obtener las funciones de forma de Lagrange para los elementos rectangulares cuyos nodos son colocados en igual distancia de las funciones de forma correspondiente en una dimensión de Lagrange. Para ello, lleve el producto tensorial de la forma tridimensional funciones-un tanto en la coordenadas x e y. Utilice las funciones de forma unidimensional para generar las funciones de interpolación de Lagrange para el siguiente elemento rectangular de cuatro nodos. Para un elemento con nodos equidistantes en dos dimensiones, como se muestra en este ejemplo, se genera funciones de interpolación de dos dimensiones. En este ejemplo, los puntos nodales del elemento se encuentra en {1, 1}, {1, - 1}, {- 1, - 1} y {- 1, 1}. En [20]: = ElementPlot [{{{1,1}, {1, -1}, {-1, -1}, {-1,1}}} AspectRatio-> 1, Ejes-> Es cierto, PlotRange-> {{-2,2}, {-2,2}}];

Como anteriormente, el cálculo de la función de interpolación de una dimensión de dos nodos en un elemento de x usando la función HermiteElement1D. Los nodos de este elemento se coloca en x = 0 y x = L, por lo tanto la longitud del elemento es de 2 L. En [21]: = HermiteElement1D [{-L, L}, 0, x]

A cabo [21] = Desde los puntos nodales son equidistantes, tanto en la coordenadas X e Y, el producto tensorial de las funciones de forma de x e y ofrece cuatro funciones de forma para el elemento rectangular. La longitud del

elemento en la dirección x es , Y la longitud del otro elemento es . Uso de la HermiteElement función, primero generar los elementos de Lagrange lineal. Luego, al tomar el producto tensorial de los dos conjuntos de funciones de forma, puede calcular las funciones de forma para el elemento rectangular de cuatro nodos. En [22]: = = sfun transposición [HermiteElement1D [{-L1, L1}, 0, x]]]. HermiteElement1D [{-L2, L2}, 0, y

A cabo [22] = Puedes verificar que estas son las funciones de interpolación deseada mediante la evaluación de sfun en los

puntos nodales del elemento rectangular, es decir, ( ), ( , ), ( , ), Y ( , ). Usted

puede calcular los valores de las funciones sfun interpolación en x = y = . En [23]: = sfun /}. {X-> L1 y->, L2

A cabo [23] =

Del mismo modo, el punto x , Y = satisface las condiciones de contorno. En [24]: = sfun /}. {X-> L1, y->-L2

A cabo [24] =

El valor de la sfun función de interpolación en el punto x = , Y = es la siguiente. En [25]: = sfun /}. {X->-L1 y->, L2

A cabo [25] =

El valor de la sfun función de interpolación en el punto x = , Y =- es la siguiente. En [26]: = sfun /}. {X->-L1, y->-L2

A cabo [26] = Usted puede generalizar este método de los elementos con más puntos nodales. Ahora generar funciones de interpolación para un elemento de nueve nodos. En [27]: = ElementPlot [{{{0,1}, {1,1}, {1,0}, {1, -1}, {0, -1}, {-1, -1}, {-1,0}, {-1,1}}, {0,0}}, AspectRatio-> 1, Ejes-> Es cierto, PlotRange-> {{-2,2}, {-2,2}}, Frame-> Es cierto, RGBColor NodeColor-> [0,0,1]];

Del mismo modo, aquí están las funciones de interpolación de Lagrange el elemento de nueve nodos. Los

nodos en la dirección x se colocan en x = , X = 0, y x = mientras que los nodos en la dirección y están en

y = , Y = 0, y = . En [28]: = Transponer [HermiteElement1D [{-L1, 0, L1}, 0, x]]]. HermiteElement1D [{-L2, 0, L2}, 0, y

A cabo [28] = Sin embargo, la situación se complica si tenemos en cuenta los elementos cuyos nodos no están igualmente espaciados en una cuadrícula. Por ejemplo, no se pueden generar las funciones de forma de elementos triangulares o rectangulares con los elementos lugares nodo irregular mediante el enfoque de tensor de producto anterior. Aquí hay dos ejemplos en los que las funciones de interpolación no se puede generar. En [29]: = p1 = ElementPlot [{{{1, -1}, {-1, -1}, {0,3 / 2}}, {0,0}}, AspectRatio-> 1, Ejes-> Es cierto, PlotRange-> {{-2,2}, {-2,2}}, RGBColor NodeColor-> [0,0,1], DisplayFunction->] Identidad; En [30]: = p2 = ElementPlot [{{{1,1}, {1, -1}, {-1, -1}, {-1,1}}, {0,0}}, AspectRatio-> 1, Ejes-> Es cierto, PlotRange-> {{-2,2}, {-2,2}}, RGBColor NodeColor-> [0,0,1], DisplayFunction->] Identidad;

En [31]: =

5.3.2 Elementos triangular Utilice el TriangularCompleteness funciones, RectangularCompleteness, y ShapeFunction2D para generar funciones de interpolación de elementos generales rectangulares y triangulares.

En primer lugar, considerar el elemento triangular con cuatro puntos nodales y obtener un conjunto de funciones de tipo de forma-Lagrange, es decir, c = 0. No especifique el número mínimo de términos simétrica para ser lanzados desde el polinomio completo. En [32]: = = TriangularCompleteness com [4,0,0]; com / / TableForm

A cabo [33] / / TableForm = Usted puede producir triángulo de Pascal con la función PascalTriangle. Para ver este esquema y teniendo en cuenta la comunidad de salida, es fácil identificar lo que los términos a utilizar en las funciones de forma y términos que lo excluye.

En [34]: =

A cabo [34] =

En [35]: =

A cabo [35] = En [36]: =] TableForm [PascalTriangle [6, {x, y}], TableAlignments-> Centro

A cabo [36] / / TableForm = A calcular los grados de los términos en el triángulo de Pascal con la misma función.

En [37]: =

A cabo [37] / / MatrixForm = Esta salida le informa acerca de la estructura de los términos polinomio en las funciones de forma de este elemento triangular de cuatro nodos. El término CompletePolynomialDegree -> 2 en la lista de salida com implica que todos los términos de las funciones de interpolación consistirá en los términos del segundo grado y polinomios inferior. En [38]: = 1 + (x + y) + (x + y) ^ 2 / / Ampliar

A cabo [38] =

El segundo argumento de la función requiere TriangularCompleteness ContinuityOrder 0.

CompleteSymmetricTerms 2 le dice que el polinomio completo tiene dos términos simétricos. Del mismo

modo, CompleteAntisymmetricTerms 4 indica que hay cuatro términos asymmetic en las funciones de

interpolación. SymmetricTerms {{0, 0}, {1, 1}} se utilizan los dos términos en el polinomio simétrico completo,

es decir, los términos 1 y xy. SymmetricTermsDropped {} Le informa de que ningún término simétrico será

dado de baja. AntisymmetricTerms {{1, 0}, {0, 1}} indica que los dos únicos términos asimétricos que se

utilizarán son xe y. Por último, AntisymmetricTermsDropped {{2, 0}, {0, 2}}} significa que los términos y serán excluidos de las funciones de interpolación. Los datos proporcionados en com se llaman también la información completa de un elemento. Con los datos completos y la ShapeFunction2D función, de manera sistemática puede generar funciones de interpolación de elementos de dos dimensiones.

A veces, el ShapeFunctions2D función no es capaz de generar un conjunto de funciones de interpolación ya que el conjunto de ecuaciones para calcular las funciones de interpolación son singulares. En estos casos, ShapeFunctions2D volverá ceros, como en este ejemplo. En [39]: = ShapeFunctions2D [com, {{1, -1}, {-1, -1}, {0,3 / 2}, {0,0}}, {x, y}]

A cabo [39] = Este resultado significa simplemente que los términos definidos en el documento COM no son adecuados para representar un conjunto de funciones de interpolación para los puntos nodales del elemento dado. En otras palabras, no se puede tener un conjunto de funciones de interpolación para este elemento en términos de xy, x, y, y una constante. En este punto, usted puede tratar de utilizar los términos de orden superior en sus cálculos.

Por ejemplo, el cambio AntisymmetricTerms {{1, 0}, {0, 1}} en la comunidad de salida a AntisymmetricTerms

{{2, 0}, {0, 2}}, lo que permite la función ShapeFunctions2D utilizar los términos y junto con una constante y el término xy cruz en la construcción de las funciones de interpolación deseada. En [40]: = = com {CompletePolynomialDegree -> 2, ContinuityOrder -> 0, CompletePolynomialTerms -> 6, CompleteSymmetricTerms -> 2, CompleteAntisymmetricTerms -> 4, ExtraTerms -> 2, SymmetricTerms -> {{0, 0}, {1, 1}}, SymmetricTermsDropped -> {}, AntisymmetricTerms -> {{2, 0}, {0, 2}}, AntisymmetricTermsDropped -> {{1, 0}, {0, 1}}}; En [41]: = = SFS ShapeFunctions2D [com, {{1, -1}, {-1, -1}, {0,3 / 2}, {0,0}}, {x, y}]

A cabo [41] = Con la ampliación de estas funciones, se puede ver la función de los términos utilizados. En [42]: = Ampliar [SFS]

A cabo [42] = Usted puede explorar otras posibilidades para obtener las diferentes funciones de interpolación para el mismo

elemento. Por ejemplo, tratan de representar las funciones de forma en términos de un término constante, x, y. En [43]: = com = {CompletePolynomialDegree -> 2, ContinuityOrder -> 0, CompletePolynomialTerms -> 6, CompleteSymmetricTerms -> 2, CompleteAntisymmetricTerms -> 4, ExtraTerms -> 2,

SymmetricTerms -> {{0, 0}, {2, 2}}, SymmetricTermsDropped -> {}, AntisymmetricTerms -> {{1, 0}, {0, 1}}, AntisymmetricTermsDropped -> {{2, 0}, {0, 2}}}; En [44]: = = FNS] ShapeFunctions2D [com, {{1, -1}, {-1, -1}, {0,3 / 2}, {0,0}}, {x, y}

A cabo [44] = En [45]: = Ampliar [fns]

A cabo [45] = Ahora compare estas funciones de interpolación mediante el trazado de SFS y FNS lo largo del eje x en y = - 1. Tenga en cuenta que dos conjuntos de funciones de interpolación presentan comportamientos muy diferentes.

En [46]: =

En [47]: =

5.3.3 Elementos rectangular Al igual que TriangularCompleteness, puede utilizar la función RectangularCompleteness para generar la información necesaria sobre las condiciones en las funciones de interpolación de un elemento rectangular.

Ahora calcular las funciones de forma para el elemento rectangular de cinco puntos.

En [48]: =

Aquí están las coordenadas de los puntos nodales de este elemento.

En [49]: = mm = {{0,0}, {1,1}, {-1,1}, {1, -1}, {-1, -1}}

A cabo [49] = Generar la información completa de elemento para los puntos. En [50]: = = sol4 RectangularCompleteness [5,0,0]; sol4 / / TableForm

A cabo [51] / / TableForm = Así es como se generan las funciones de interpolación para este elemento. En [52]: = = sfun ShapeFunctions2D [sol4, mm, {x, y}]

A cabo [52] = Ahora dibuja los gráficos en tres dimensiones de estas cinco funciones de forma. En [53]: = tabla [dibujar3d [sfun [[i]], {x, -1,1}, {y, -1,1}, PlotRange-> {{-2,2}, {-2,2}, Todos} FaceGrids-> {{0,0, -1 }}],{ i, 1,5}];

Superponer los cinco gráficos para mostrar la idea básica detrás del concepto de función de forma. En [54]: = Show [%];

5.3.4 Elementos de Serendipity Los elementos de serendipia son los elementos rectangulares sin nodos interiores. Puede obtener las funciones de forma de estos elementos utilizando las funciones RectangularCompleteness y ShapeFunctions2D. La principal ventaja de los elementos serendipia es que desde los nodos internos de la orden superior elementos de Lagrange no contribuyen a la conectividad entre los elementos, la eliminación de los resultados de los nodos internos a reducciones en el tamaño de las matrices de elemento.

Consideremos ahora un niño de ocho nodos serendipia elemento con los puntos nodales siguientes. En [55]: = puntos = {{0,1}, {1,1}, {1,0}, {1, -1}, {0, -1}, {-1, -1}, { -1,0}, {-1,1}}

A cabo [55] = Entonces usted puede trazar la ubicación de los puntos nodales del elemento. En [56]: = ElementPlot [{} puntos, PlotRange-> {{-2,2}, {-2,2}}, Ejes-> Es cierto, AspectRatio-> 1];

Aquí usted puede obtener la información completa para el elemento con el RectangularCompleteness función. En [57]: = = comp8 RectangularCompleteness [8,0,1]; comp8 / / TableForm

[58] / / TableForm = Mediante el uso de ShapeFunction junto con la información completa antes, puede generar las funciones de interpolación para el elemento en cuestión. En [59]: = = SFS ShapeFunctions2D [comp8, puntos, {x, y },{}]; sfs / / TableForm

A cabo [60] / / TableForm =

Puede producir y sobreponer las gráficas de estas funciones. En [61]: = [Cuadro dibujar3d [SFS [[i]], {x, -1,1}, {y, -1,1}, PlotRange-> {{-2,2}, {-2,2}, Todos} FaceGrids-> {{0,0, -1}}, ] Identidad DisplayFunction-> {i, 1,8}]; En [62]: =] Ver [% DisplayFunction,> $ DisplayFunction;

Ahora, como un ejemplo más complicado, que puede producir las funciones de forma de un elemento de casualidad doce nodo para el elemento con las siguientes coordenadas de los puntos nodales. En [63]: = puntos = {{1 / 3, 1}, {1,1}, {1,1 / 3}, {1, -1 / 3}, {1, -1}, {1 / 3, -1}, {-1 / 3, -1}, {-1, -1}, {-1, -1 / 3}, {-1,1 / 3}, {-1,1}, {-1 / 3, 1}}

A cabo [63] = Usted puede ver la ubicación de los nodos utilizando la ElementPlot función. En [64]: = ElementPlot [{} puntos, PlotRange-> {{-2,2}, {-2,2}}, Ejes-> Es cierto, AspectRatio-> 1];

La disminución de dos términos simétricos de completar el polinomio adecuado, puede obtener la información completa para este elemento. En [65]: = = comp12 RectangularCompleteness [12,0,2]; comp12 / / TableForm

A cabo [66] / / TableForm =

Uso de la ShapeFunctions2D función, es fácil de obtener las funciones de forma para este nodo casualidad elemento doce. En [67]: = ShapeFunctions2D [comp12, puntos, {x, y },{}]// TableForm

A cabo [67] / / TableForm = 5.4 Plano de Elasticidad 5.4.1 Observaciones generales En esta sección se resuelve una serie de problemas elemento finito plano para ilustrar la funcionalidad proporcionada en Mecánica Estructural. Además de las funciones de análisis de elementos finitos, muchas funciones que muestra los pasos intermedios en un análisis de elementos finitos y la producción de la representación gráfica de los resultados se incluyen. Puede utilizar las funciones StiffnessMatrix, ConstraintEquations, NaturalStateVariables y EssentialStateVariables para calcular las matrices de rigidez del elemento y para generar ecuaciones de restricción y las variables esenciales y naturales. Uso de la FEModelPlot funciones y DeformedMesh, puede generar una representación gráfica de la malla con un número y el elemento nodal, y la forma de las mallas después de que fuerzas se aplican. La función principal de la PlaneElasticity paquete es PlaneElasticityFEA.

Opciones para la función PlaneElasticityFEA. El formato de la lista de datos del control DataList argumento para esta función es el siguiente. Cada punto nodal es descrito por una lista de cuatro valores:

El primer valor es el número de un nodo.

El segundo valor es una lista que contiene los números de los elementos que comparten este nodo.

El tercer valor es una lista que contiene las limitaciones de las condiciones de contorno esenciales (desplazamientos).

El último valor contiene los dos componentes de la fuerza aplicada (condición de frontera natural) en este punto nodal.

5.4.2 Herramientas de análisis Ahora, usted examina las herramientas de análisis básicos disponibles para el análisis de elementos finitos, mientras que la solución de un problema sencillo. La lista DataList en el ejemplo siguiente representa una de cuatro nodos, dos elementos del modelo de elementos finitos. Los nodos 1 y 4 se fijan tanto en el x - y y direcciones, y dos fuerzas punto se aplican en estos puntos nodales, uno en el nodo 2 en la dirección x con 160 po / 2 magnitud y la otra en el nodo 3 con el misma dirección y magnitud. Los nodos de un elemento son numeradas como 1, 2 y 3, y los nodos de elemento 2 son 1, 3 y 4. En la lista DataList, u denota el tipo esencial, mientras que u [x] y [u] son los desplazamientos en la x - y y direcciones. En [68]: = = {DataList {1, {1,2}, {u [x] [1] == 0, u [y] [1] == 0}, {0,0}}, {2, {1}, {}, {160 po / 2,0}}, {3, {{1,2 },{}, 160 po / 2,0}}, {4, {2}, {u [x] [4] == 0, u [y] [4] == 0}, {0,0}} };

Esta representación del modelo, condiciones de contorno, y las fuerzas aplicadas se llama forma DataList. Las coordenadas de estos puntos nodales son especificados por la siguiente lista. En [70]: = nodecoordinates = {{0,0}, {120,0}, {120160}, {0160}};

Para ver la ubicación de los nodos y elementos, y para verificar el modelo, se puede señalar a la malla de este modelo con el FEModelPlot función. FEModelPlot función hereda las opciones de la función de terreno, además de sus opciones específicas.

Opciones para la función FEModelPlot. En [71]: = op = FEModelPlot [nodecoordinates, DataList PlotRange-> {{-50.150}, {}} -50.200, Ejes->] Es cierto;

Puede obtener la matriz de conectividad de un modelo especificado con DataList en forma DataList con la función ConnectivityMatrix de su lista de datos.

En [72]: = ConnectivityMatrix [DataList]

[72] = PlaneElasticityFEA realiza llamadas a un número de funciones para el cálculo de fuerzas nodales y los desplazamientos. Como usuario, también puede llamar a estas funciones. Cuando los pasos intermedios de un análisis de elementos finitos son de interés, que pueden adoptar las funciones de cálculo de la rigidez del elemento de la matriz con la función StiffnessMatrix, las ecuaciones de restricción con ConstraintEquations, y los símbolos reservados para el natural y esencial variables de estado y NaturalStateVariables EssentialStateVariables.

Opciones para la función StiffnessMatrix. Calcular los desplazamientos y las fuerzas en los puntos nodales de este modelo de placa de dos elementos en tensión plana. Hacer que el espesor de la placa de 0,036 pulgadas y la carga distribuida po = 10.0 libras por pulgada. Nombre de las coordenadas y esencial (desplazamiento) y naturales (la fuerza) las condiciones de

contorno {x, y} y {u, f}, respectivamente. El material de la placa es isótropo con módulo de Young E = 30

y la relación de Poisson = 0.25 para ambos elementos. En [73]: = po = 10,0; (* campo de presión: constante en los valores de fuerza *) él = 0,036; (espesor * Placa *) coordenadas = {x, y}, (coordenadas cartesianas * *) bctypes = {u,} f (* {esenciales, naturales} *); elasticitydata = {{30 10 6,0.25 ^}, {30 10 6,0.25 ^}}; (* módulo de Young, coeficiente de Poisson *) En [78]: = = sols1 PlaneElasticityFEA DataList [, bctypes, elasticitydata, nodecoordinates, él, coordenadas, ElasticityType-> isotrópico, StressMode-> PlaneStress]; En [79]: = sols1 [[1]]

A cabo [79] = Para ver mejor la solución, la representa en el formato TableForm después de su clasificación y aplanamiento. En [80]: = Aplanar [Ordenar [sols1 [1 ]]]// TableForm A cabo [80] / / TableForm =

Para calcular la ubicación de los puntos nodales después de que el modelo fue sometido a fuerzas externas, agregue los desplazamientos correspondientes a los nodos utilizando el DeformedMesh función.

Ahora trama de la malla deformada con un factor de escala grande, 2 × . En [81]: = FEModelPlot [DeformedMesh [sols1, nodecoordinates, 2 10 ^ 4, {x, y}, {u, f}], DataList PlotRange-> Todos los ElementNumbers-> Falso, NodeNumbers-> Falso, RGBColor PlotStyle-> [0,0,1]];

En [82]: =] Ver [op,%;

La salida proporciona las fuerzas y desplazamientos en todos los puntos nodales de los elementos. Mientras que el desplazamiento en los mismos puntos nodales de los diferentes elementos son los mismos, las fuerzas no son necesariamente los mismos debido al hecho de que el equilibrio de las fuerzas en un nodo se hace cumplir. Por ejemplo, en el nodo 1 de los elementos 1 y 2 se han calculado los valores diferentes para el componente de la fuerza en la dirección x: f [x] [1] [1] -> 823,328 y f [x] [1] [2 ] -> - 23.328. Sin embargo, como se esperaba, el desplazamiento, ya sea en la x - o y-dirección en el punto 3 son iguales: u [x] [3] [1] -> - 0,00101129 y u [x] [3] [2] -> - 0,00101129. 5.4.3 Plano de estrés en comparación con plano de tensión Aquí usted puede resolver el mismo sistema con el supuesto de deformación plana y comparar los resultados. En [83]: = = sols2 PlaneElasticityFEA DataList [, bctypes, elasticitydata, nodecoordinates, él, las coordenadas, ElasticityType-> isotrópico, StressMode-> PlaneStrain];

Imprimir los resultados en ambos lados supuestos a lado en forma de tabla. La primera columna de la tabla siguiente corresponde a la solución con la suposición de tensión plana,-> PlaneStress StressMode, y la segunda es con la hipótesis de deformación plana, StressMode-> PlaneStrain. En [84]: = Transponer [{Aplanar [sols1], Aplanar [sols2 ]}]// Pique / TableForm /

A cabo [84] / / TableForm = Las fuerzas de reacción en la dirección x en el caso de tensión plana f [x] [1] [1] + f [x] [1] [2] = 800.00, y f [x] [2] [1] = 800,00 , por lo que el equlibrium fuerza global en esa dirección está satisfecho. A partir de estos datos señalan que las fuerzas nodales en el caso de deformación plana son más grandes que los de tensión plana, mientras que los desplazamientos nodales de deformación plana son menos que los de tensión plana. 5.4.4 Caso ortotrópico Para materiales anisótropos, es necesario suministrar la PlaneElasticityFEA función con las constantes de material de la matriz C para cada elemento. Se puede caracterizar un material ortotrópico por cuatro constantes de elasticidad, y calcular la matriz C en las relaciones constitutivas de tensión plana y ambos casos el plano de la cepa mediante estos cuatro coeficientes. Ahora calcular la matriz C en ambos casos con los datos siguientes. En [85]: = E1 = 31 10 ^ 6; E2 = 2,7 10 ^ 6; G12 = 0,75 10 ^ 6; nu12 = 0,28;

Aquí está la matriz C para el caso de tensión plana. En [89]: = (tensión plana * *) nu21 = nu12 E2/E1; c11 = E1 / (1-nu12 nu21); c22 = E2 / (1-nu12 nu21); c12 c11 = nu21; C66 = G12; cmatrix1 = {{C11, C12, 0}, {c12, c22, 0}, {0,0, C66}}; MatrixForm [cmatrix1]

A cabo [96] / / MatrixForm = Esta es la matriz C para el caso de deformación plana. En [97]: = (Plano de tensión * *) nu21 = nu12 E2/E1; c11 = E1 (1-nu12) / (1-nu12-2nu12 nu21); c22 = E2 (1-nu12 nu21) / ((1 + nu12) (1-2-nu12 nu12 nu21)); c12 = E2 nu12 / (1-2-nu12 nu12 nu21); C66 = G12; cmatrix2 = {{C11, C12, 0}, {c12, c22, 0}, {0,0, C66}}; MatrixForm [cmatrix2]

Salida: [104] / / MatrixForm = Calcular las fuerzas y desplazamientos en los puntos nodales de la malla para tensión plana y deformación plana y comparar los resultados. En [105]: = = sols1 PlaneElasticityFEA DataList [, bctypes, {cmatrix1, cmatrix1}, nodecoordinates, él, las coordenadas, ElasticityType-> anisotrópico, StressMode->] PlaneStress; En [106]: = = sols2 PlaneElasticityFEA DataList [, bctypes, {cmatrix2, cmatrix2}, nodecoordinates, él, las coordenadas, ElasticityType-> anisotrópico, StressMode-> PlaneStrain];

In the following representation, the first column corresponds to plane stress, and the second column is for plane strain. In[107]:= Transpose[{Flatten[sols1],Flatten[sols2]}]//Chop//TableForm

Out[107]//TableForm=

From this data, as in the previous example, observe that the nodal forces for plane strain are larger than those for plane stress, whereas the nodal displacements for plane strain are less than those for plane stress. 5.4.5 Four-Element Model In general, the accuracy of a finite element analysis increases for models with more elements. However, there are some cases in which the accuracy may decrease with increasing element numbers. This section considers the same geometry with a four-element mode and examines the effect of the element numbers in a model. As for the two-element model, first prepare the arguments of the function PlaneElasticityFEA . In[108]:= bctypes={u,f} (*{u: essential type BC, f: natural type BC } *); nodecoordinates={{0,0},{120,0},{120,160},{0,160},{60.0,80.0}}; po=10.00; (* the numerical value of the applied force in datalist *) datalist= { {1,{1,4}, {u[x][1]==0,u[y][1]==0},{0,0}}, {2,{1,2}, {}, {160 po/2,0}}, {3,{2,3}, {}, {160 po/2,0}}, {4,{3,4}, {u[x][4]==0,u[y][4]==0},{0,0}}, {5,{1,2,3,4},{}, {0,0}} } ; elasticitydata={{30 10^6,.25},{30 10^6,.25}, {30 10^6,.25},{30 10^6,.25}}; (* Young's modulus, Poisson's ratio *) coordinates={x,y}; he=.036; (* Plate thickness *)

Plot the mesh for the problem. In[117]:= fe=FEModelPlot[nodecoordinates, datalist, PlotRange->{{-50,150},{-50,200}}, Axes->True];

Again, determine the forces and the displacements at the nodal point of the model for plane strain and plane stress. In[118]:= sols1=PlaneElasticityFEA[datalist,bctypes, elasticitydata,nodecoordinates,he,coordinates, ElasticityType->Isotropic, StressMode->PlaneStress]; In[119]:= sols2=PlaneElasticityFEA[datalist,bctypes, elasticitydata,nodecoordinates,he,coordinates, ElasticityType->Isotropic, StressMode->PlaneStrain];

Here is the table representation of the two results. In[120]:= Transpose[{Flatten[sols1],Flatten[sols2]}]//Chop//TableForm

Out[120]//TableForm= The x -component of the displacement at node 2 in the four-element model for the plane strain case, 0.001082 unit, is slightly higher than that in the two-element model, 0.001057 unit. The y -component of the displacement at the same node in the four-element model for plane stress case, 0.002157 unit, is higher than that in the two-element model, 0.0002569 unit. This observation is in accordance with the general belief that the models with fewer elements usually tend to be stiffer.

Plot the deformed meshes for both cases with a large scaling factor, 4 × . First, generate the deformed plot for the plane stress case.

In[121]:=

La malla original y la malla deformada se muestran juntos.

En [122]: =

Aquí está la malla deformada de deformación plana.

En [123]: =

En [124]: =

Here compare the deformations obtained under the plane stress and plane strain assumptions.

In[125]:=

This plot reveals that the deflections for the plane stress case is greater than that for the plane strain case.

5.4.6 Mesh Generation: Triangulation In previous examples, the analysis domain is triangulated by the user when forming the data list datalist . Using the function PolygonTriangulate , a domain specified by a polygon can be partitioned into triangles.

Triangulate the domain defined by the following list of points using the function PolygonTriangulate . In[126]:= pts={{0.799109, 0.201991}, {0.799109, 0.798019}, {0.005076, 0.791397}, {0.005076, 0.208613}, {0.209724, 0.208613}, {0.209724, 0.579475}, {0.594461, 0.586098}, {0.598554, 0.201991}};

This is how the cross section looks before triangulation. In[127]:= ori=Show[Graphics[Line[Append[pts,pts[[1]] ]]]];

In[128]:= con=PolygonTriangulate[pts]

Out[128]= A six-triangle partition results. The vertices of the first triangle are formed by the nodal points 3, 4, 5, and so on. Using the function MeshPlot from the package TriangulatePolygon , you can generate a graphic representation of this triangulation. The function MeshPlot inherits its options from the Plot function.

In[129]:= MeshPlot[pts,con,PlotRange->All];

Using the function ConnectivityMatrix in a reverse manner, you can generate the data list output showing how the nodes are connected to the elements. In[130]:= dl=ConnectivityMatrix[Table[{i,con[[i]]},{i,1,Length[con]}]]

Out[130]= This result shows that node 1 is shared by elements 2 and 4, node 2 is shared by elements 4, 5, and 6, and so on.

You can obtain the same mesh using FEModelPlot where the list dl represents the data list of a finite element model. Note that for an analysis, you need to have the boundary conditions and the applied forces in this data list. In[131]:= FEModelPlot[pts,dl];

Ambos nodos y elementos pueden ser etiquetados de cualquier manera que usted desea. Por ejemplo, puede numerar los nodos con números pares y los elementos con los múltiplos de tres consecutivos. En [132]: = ptsno = tabla [i {2, puntos [[i ]]},{ i, 1, Longitud [puntos]}]; En [133]: connect = = tabla [3 {i, con [[i ]]},{ i, 1, Longitud] con [}];

El siguiente gráfico presenta la numeración de la malla. En [134]: = MeshPlot [ptsno, conectar, PlotRange-> Todos];

5.4.7 Modelo de la sección del canal En esta sección se considera una sección del canal sometido a un par de fuerzas. En primer lugar generar una malla triangular de la estructura. Luego de obtener las fuerzas y desplazamientos en los puntos nodales en los casos de deformación plana y tensión plana. Por último, comparar los dos resultados. Aquí están las coordenadas de los puntos nodales. En [135]: = = 1.000 pts {{0.79, 0.20}, {0,79, 0,79}, {0,00, 0,79}, {0,00, 0,20}, {0.20, 0.20}, {0,20, 0,59}, {0,59, 0,59}, {0.59, 0.20}};

Ahora generar la malla triangular, puntos, y la matriz de conectividad, dl, para este modelo. En [136]: = con = PolygonTriangulate [puntos]

Salida: [136] = En [137]: = dl = tabla [ConnectivityMatrix [{i, con [[i ]]},{ i, 1, [Largo] Con}]]

Salida: [137] = La figura siguiente presenta la lista de lesionados de malla con puntos nodales y los números de elemento. En [138]: = om =] FEModelPlot [pts, dl PlotRange,> Todos;

Aplique dos unidades de la fuerza en los nodos 1 y 4 en la dirección x y fijar el modelo en los nodos 2 y 3 de la x - y y-direcciones: u [x] [2] = 0, u [y] [2] = 0, y u [x] [3] = 0, u [y] [3] = 0. La lista de datos para estos modos se genera de la siguiente manera. En [139]: = = DataList {{1, {2, 4}, {}, {1,0}}, {2, {4, 5, 6}, {u [x] [2] == 0, u [y] [2] == 0}, {0,0}},

{3, {1, 3, 5}, {u [x] [3] == 0, u [y] [3] == 0}, {0,0}}, {4, {1}, {}, {-1,0}}, {5, {1, 3}, {}, {0,0}}, {6, {3, 5, 6 },{}, {0,0}}, {7, {2, 4, 6 },{}, {0,0}}, {8, {2}, {}, {0,0}}}; bctypes = {u,} f (* {u: tipo esencial antes de Cristo, f: natural tipo BC} *); nodecoordinates = 1000 {{0.79, 0.20}, {0,79, 0,79}, {0,00, 0,79}, {0,00, 0,20}, {0.20, 0.20}, {0,20, 0,59}, {0,59, 0,59}, {0.59, 0.20}};

Aquí están las propiedades de elasticidad del material de la sección del canal. El material es isótropo, y él es el espesor de corte. En [143]: = = elasticitydata Tabla [{30. 10 ^ 6, 0,25}, {6}];. (* Módulo de Young, coeficiente de Poisson *) coordenadas = {x, y}; que =. 01; (* Espesor de la chapa *)

En primer lugar, resolver el modelo bajo el supuesto de deformación plana. En este modelo, el enfoque de deformación plana es más realista ya que la longitud del tramo es mucho mayor que las otras dimensiones de la sección transversal. En [147]: = = sols1 PlaneElasticityFEA DataList [, bctypes, elasticitydata, nodecoordinates, él, las coordenadas, ElasticityType-> isotrópico, StressMode-> PlaneStrain];

Ahora, resolver el mismo problema con la hipótesis de tensión plana. En [148]: = = sols2 PlaneElasticityFEA DataList [, bctypes, elasticitydata, nodecoordinates, él, las coordenadas, ElasticityType-> isotrópico, StressMode->] PlaneStress;

In the following, compare the plane strain (first column) and the plane stress (second column) approaches. In[149]:= Transpose[{Flatten[sols1],Flatten[sols2]}]//Chop//TableForm

Out[149]//TableForm=

As in the example in Section 5.4.3, the nodal forces obtained under the plane strain assumption are larger than those for the plane stress case, whereas the nodal displacements for the plane stress case are less than those for plane strain case. Since the magnitude of the displacements are very small compared to that of the coordinates of the nodal points, you need to scale the displacements so that their effect can be visually

presented. Take the value of this factor 5 × in the following representation. In[150]:= do=FEModelPlot[DeformedMesh[sols1,nodecoordinates,5. 10^6,{x,y},{u,f}],datalist,PlotRange->All];

Superimpose the original mesh and the deformed mesh with upscaled displacements by a factor of 5 × .

In[151]:=

5.4.8 Cantilever Beam Model This section focuses on the analysis of a cantilever beam subjected to an edge load at the free end. It assumes that the material of the beam is isotropic, and that the stress mode of this analysis is plane stress. In this analysis, you can use the different finite element meshes consisting of linear triangular elements, and the triangulation scheme introduced in Structural Mechanics . After discussing the shortcomings of this type of triangulation, this section gives a simple method of producing a more regular mesh and carries out the analysis with the regular mesh. Finally, a finer regular mesh is considered and the results are compared with the analytical solution for the cantilever beam. Triangular Mesh Generate the mesh for a 10-inch cantilever beam with a rectangular 2 × 1 cross section using the triangulation function PolygonTriangulate . First, make sure that the nodal points are placed in the counterclockwise direction. In[152]:= ptsn={{0,0},{10/3,0},{20/3,0},{10,0},{10,2},{20/3,2},{10/3,2},{0,2}}

Out[152]= Then calculate a triangulation for these nodes. In[153]:= con=PolygonTriangulate[ptsn]

Out[153]= This shows the triangulation con generated with the triangulation function PolygonTriangulate . In[154]:= MeshPlot[ptsn,con, PlotRange->All, AspectRatio->.2];

You could generate a different mesh that would partition the analysis domain into more regular triangles with symmetries.

Generate the connectivity matrix of this triangulation. In[155]:= ConnectivityMatrix[Table[{i,con[[i]]},{i,1,Length[con]}]]

Out[155]= In the data list datalist, specify the boundary conditions for specified forces and displacements. Fix the cantilever beam at nodes 1 and 8 in the x- and y- directions. Apply two point forces of 150 lb. at the free end of the beam, that is, nodes 4 and 5 in the negative y -direction. The list datalist contains the connectivity information of the model and the boundary conditions. En [156]: = = {DataList {1, {2,4,5,6}, {u[x][1]==0,u[y][1]==0},{0, 0}}, {2, {3,5}, {}, {0, 0}}, {3, {1,3}, {}, {0, 0}}, {4, {1}, {}, {0, -150}}, {5, {1,3,5,6}, {}, {0, -150}}, {6, {4,6}, {}, {0, 0}}, {7, {2,4}, {}, {0, 0}}, {8, {2}, {u[x][8]==0,u[y][8]==0},{0, 0}}};

In the following, you can define the variable names for the boundary types, the elasticity coefficients of the isotropic beam material, and the beam thickness. En [157]: = bctypes = {u,} f (* {u: tipo esencial antes de Cristo, f: natural tipo BC} *); nodecoordinates PtSn =; elasticitydata = tabla [{30. 10 ^ 6, 0,25}, {6}];. (* Módulo de Young, coeficiente de Poisson *) coordenadas = {x, y}; él = 1,00; (* Espesor de la chapa *)

Uso de la función PlaneElasticityFEA, se puede calcular las fuerzas y el desplazamiento en los puntos nodales para el modo de tensión plana. En [162]: = = sols2 PlaneElasticityFEA DataList [, bctypes, elasticitydata, nodecoordinates, él, las coordenadas, ElasticityType-> isotrópico, StressMode->] PlaneStress;

Intuitivamente sabemos que el desplazamiento máximo se realiza en el extremo libre de la viga en los nodos 4 y 5. En [163]: = u [y] [4] [1] / sols2.

Salida: [163] =

En [164]: =

Salida: [164] = En [165]: = u [y] [5] [1] / sols2.

Salida: [165] = Entonces usted puede calcular el valor exacto de este desplazamiento con la solución analítica para la viga en voladizo. En [166]: pf = =- 2 150; E1 = 30 10 ^ 6; nu =. 25; L = 10.; I1 = 3.2; exactdef = (pf L ^ 3 / (3 E1 I1)) (1 +3. (1 + nu) / L ^ 2)

Salida: [171] = Esta es la razón de la solución exacta a la solución de elemento finito obtenido anteriormente en el nodo 4. En [172]: = exactdef / u [y] [4] [1] / sols2.

Salida: [172] =

El desplazamiento exacta es 10 veces mayor que la aproximación de uno. La razón de este gran error, como se verá en los próximos dos ejemplos, se debe a los elementos dispersos y mallado irregular. Uso de la DeformedMesh función, puede dibujar la malla deformada con desplazamientos ampliada en un factor de 1000. En [173]: = = fe2 FEModelPlot [DeformedMesh [sols2, nodecoordinates, 10 ^ 3, {x, y}, {u, f}], DataList PlotRange-> Todos los aspectRatio-> 0,2];

En [174]: = = Mostrar pl1 [Fe2, gráficos [Línea Anexar [[PtSn, [PtSn [1 ]]]]], AspectRatio-> 0.4, PlotRange-> {{-2,12}, {-2,4}}];

Regular malla In the previous example, an irregular triangulation generated by PolygonTriangulate was used as the mesh. The tip displacement was about 10 times larger than the linear theory predicted. Now focus on the regularity of the mesh and study the effect of the grid structure on finite element results. Without changing the number of elements in the model, you can use a regular grid with 4 nodes in the x -direction, and 2 points in the y -direction as the mesh. The nodes are equally spaced in their respective directions. In[175]:= n1=4; n2=2;

The following Mathematica lines generate the connectivity information of the model. In[177]:= nds=Table[{ {i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1}, {i+(j-1) n1,i+j n1,i+1+j n1}}, {i,1,n1-1}, {j,1,n2-1}]; pt=Partition[Flatten[nds],3]

Out[179]= Number the nodes from 1 to 6. In[180]:= con=(k=0;Map[{++k,#}&,pt])

Out[180]= Next compute locations of nodes 1 to 6. In[181]:= xo=0; yo=0; dx=10/(n1-1); dy=2/(n2-1); pts=Partition[Flatten[Table[{ xo + (i-1) dx, yo + (j-1) dy}, {j,1,n2},{i,1,n1}]],2]

Out[185]= These connectivity data and nodal points result in the following mesh. In[186]:= MeshPlot[pts,con,PlotRange->All,AspectRatio->.2,Axes->True];

Here is the connectivity matrix for this mesh. In[187]:= con1=ConnectivityMatrix[con]

Out[187]= From this connectivity matrix and the boundary conditions, you can construct the data list and the other arguments of the function PlaneElasticityFEA for the new model. En [188]: = = {DataList {1, {1, 2}, {u[x][1]==0,u[y][1]==0},{0, 0}}, {2, {1, 3, 4}, {}, {0, 0}}, {3, {3, 5, 6}, {}, {0, 0}}, {4, {5}, {}, {0,-150}}, {5, {2}, {u[x][5]==0,u[y][5]==0},{0, 0}}, {6, {1, 2, 4}, {}, {0, 0}}, {7, {3, 4, 6}, {}, {0, 0}}, {8, {5, 6}, {}, {0,-150}}}; In[189]:= bctypes={u,f} (* {u: essential type BC, f: natural type BC } *); nodecoordinates=pts; elasticitydata=Table[{30. 10.^6,.25},{6}]; (* Young's modulus, Poisson's ratio *) coordinates={x,y}; he=1.00; (* Plate thickness *) In[195]:= sols1=PlaneElasticityFEA[datalist,bctypes,elasticitydata,nodecoordinates,he, coordinates, ElasticityType->Isotropic, StressMode->PlaneStress];

Here are the endpoint displacements at the same nodal point as in the previous mesh. In[196]:= u[y][4][5]/.sols1

Out[196]= In[197]:= u[y][8][5]/.sols1

Out[197]= This improves the accuracy of the endpoint displacements, but the true displacement to calculated displacement ratio is still high. As shown in the following, the ratio is almost 6. However, this example clearly demonstrates the positive effect of the regular mesh on the accuracy of results. In the next example, you can use a refined model in order to study its effect further. In[198]:= exactdef/u[y][4][5]/.sols1

Out[198]=

Here is how the deflected beam looks with a magnification factor of . In[199]:= fe=FEModelPlot[DeformedMesh[sols1,nodecoordinates,10^3,{x,y},{u,f}],datalist, PlotRange->All,AspectRatio->.2];

In[200]:= pl2=Show[fe,Graphics[Line[Append[ptsn,ptsn[[1]] ]]], AspectRatio->.4,PlotRange->{{-2,12},{-2,4}}];

Finer Regular Mesh Now you can further refine the mesh for the cantilever beam problem to study the effect of the number of elements on the accuracy of approximated endpoint displacements. This grid will have five nodes in the x- direction, and 3 points in the y- direction. The nodes are equally spaced in their respective directions. As in the previous example, first produce the mesh.

In[201]:= n1=5; n2=3; In[203]:= nds=Table[{{i+(j-1)n1,i+(j-1)n1+1,i+1+j n1}, {i+(j-1)n1,i+j n1,i+1+j n1} }, {i,1,n1-1}, {j,1,n2-1}]; In[204]:= pt=Partition[Flatten[nds],3]; con=(k=0;Map[{++k,#}&,pt]); xo=0; yo=0; dx=10/(n1-1);dy=2/(n2-1); In[209]:= nodecoordinates=Partition[Flatten[Table[{xo+(i-1)dx,yo+(j-1)dy},{j,1,n2}, {i,1,n1}]],2];

This produces the mesh that is specified by the nodal points pts, the meshing information con, and a number of MeshPlot options.

In[210]:=

By setting the plot range option PlotRange->{{0,3},{0,2.5}} , you can closely view portions of elements 3 and 4 on the upper-left corner of the mesh. In[211]:= MeshPlot[nodecoordinates,con, PlotRange->{{-0.5,3},{.75,2.25}}, AspectRatio->.5, Axes->False];

Generate the connectivity matrix of this mesh from the meshing information con using the function ConnectivityMatrix . In[212]:= con1=ConnectivityMatrix[con];

Add { } and {0, 0} for the boundary conditions and the applied forces to the list con 1. In[213]:= Map[{#[[1]],#[[2]],{},{0,0}}&,con1]//MatrixForm

Out[213]//MatrixForm= Now edit the output of this line to include the boundary conditions ( u [ x ][1] = 0, u [ y ][1] = 0, u [ x ][6] = 0, u [ y ][6] = 0, u [ x ][11] = 0, and u [ y ][11] = 0), and the applied forces {0, - 75} at nodal point 5, {0, - 150} at nodal point 10, and {0, - 75} at nodal point 15.

In[214]:= datalist= { {1, {1,2}, {u[x][1]==0,u[y][1]==0}, {0, 0}}, {2, {1,5,6}, {}, {0, 0}}, {3, {5,9,10}, {}, {0, 0}}, {4, {9,13,14}, {}, {0, 0}}, {5, {13}, {}, {0, -75}}, {6, {2,3,4}, {u[x][6]==0,u[y][6]==0}, {0, 0}}, {7, {1,2,3,6,7,8}, {}, {0, 0}}, {8, {5,6,7,10,11,12},{}, {0, 0}}, {9, {9,10,11,14,15,16},{}, {0, 0}}, {10,{13,14,15}, {}, {0, -150}}, {11,{4}, {u[x][11]==0,u[y][11]==0}, {0, 0}}, {12,{3,4,8}, {}, {0, 0}}, {13,{7,8,12}, {}, {0, 0}}, {14,{11,12,16}, {}, {0, 0}}, {15,{15,16}, {}, {0, -75}} };

Now label the essential and natural type boundary conditions as u and f . In[215]:= bctypes={u,f}

Out[215]= All the elements in the mesh are made of the same material whose Young's modulus and Poisson's ratio are 30 ×

and 0.25 stress-units, respectively. In[216]:= elasticitydata=Table[{30. 10.^6,.25},{16}];

Label the coordinate system of the model x and y . In[217]:= coordinates={x,y}

Out[217]= The thickness of the modeled plate is 1.00 unit. In[218]:= he=1.00;

This calculates the nodal displacements and forces. In[219]:= sols3=PlaneElasticityFEA[datalist,bctypes,elasticitydata,nodecoordinates, he,coordinates, ElasticityType->Isotropic, StressMode->PlaneStress];

Here are the x - and y -components of the displacements at the free end nodes. In[220]:= u[y][10][15]/.sols3

Out[220]= In[221]:= u[y][5][13]/.sols3

Out[221]= In[222]:= u[y][15][15]/.sols3

Out[222]= With this regular mesh you obtain better accuracy in the calculations of the endpoint displacement, but it is still not good enough. The calculated displacement is more than three times greater than the exact displacement at the same point. Further refinement of the mesh is required for reasonably accurate results. In[223]:= exactdef/u[y][5][13]/.sols3

Out[223]= Using the function DeformedMesh , you can illustrate the displacements of the nodal points in the mesh with a

displacement magnification factor of . In[224]:= fe=FEModelPlot[DeformedMesh[sols3,nodecoordinates,10^3,{x,y},{u,f}], datalist,PlotRange->All,AspectRatio->.2];

In order to highlight the deformation of the beam, superimpose this plot and the outer boundaries of the undeformed shape of the cantilever beam. In[225]:= pl3=Show[ fe,Graphics[Line[Append[ptsn,ptsn[[1]] ]]], AspectRatio->.4,PlotRange->{{-2,12},{-2,4}}];

Compare the displacement graphically. The endpoint displacements approach the theoretical values as the mesh becomes more regular and refined. In[226]:= Show[GraphicsArray[{{pl1},{pl2},{pl3}}]];

5.4.9 Mesh Generation: Isoparametric Formulation Techniques Based on Rectangular Elements This section shows how you use a rectangular grid and isoparametric formulation to generate a mesh for simple

two-dimensional shapes. It uses the following numbering schema for grid (nodal) points where i , j , and denote the column number, the row number, and the number of grids in the x- direction in a row, respectively. In[227]:= Show[ Graphics[{Text["i+(j-1)*n1",{-1.0,-1.3}], Text["i+(j-1)*n1+1",{1.0,-1.3}], Text["i+n1*j+1",{1.,1.3}], Text["i+j*n1",{-1.,1.3}]}], ElementPlot[{{{-1,-1},{1,-1},{1,1},{-1,1}}}, NodeColor->RGBColor[0,.5,0], DisplayFunction->Identity], PlotRange->{{-2,2},{-2,2}}, Axes->True, AspectRatio->1];

Generate the nodal points of a square grid consisting of six grids in each direction. In[228]:= n1=6; n2=6; nds=Table[{i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1,i+j n1}, {i,1,n1-1}, {j,1,n2-1}];

The node numbers of the first element (for i = 1, 2; j = 1, 2; and = 6). In[232]:= nds[[1,1]]

Out[232]=

You need to convert nds , which is given in matrix form, into a list of four elements, and label the elements in a sequence. This will produce the connectivity matrix of the mesh. In[233]:= pt=Partition[Flatten[nds],4]; In[234]:= con=(k=0;Map[{++k,#}&,pt]);

Now determine the coordinates of the grid points. First find the coordinate of the bottom-left point. In[235]:= xo=-1; yo=-1;

Next calculate the width and height of the square grid, and the corresponding element sizes. In[237]:= xlength=2; ylength=2; dx=xlength/(n1-1); dy=ylength/(n2-1);

Generate the coordinates of the previous nodal points pt . In[241]:= pts=Partition[Flatten[Table[{xo+(i-1)dx,yo+(j-1)dy}, {j,1,n2},{i,1,n1}]],2];

This produces the mesh that is specified by the nodal points pts, the connectivity matrix con, and a number of MeshPlot options. In[242]:= MeshPlot[pts,con, PlotRange->1.2{{-1,1},{-1,1}}, AspectRatio->1, Axes->True];

Now generate the interpolation functions that you can use in the isoparametric formulation and mapping of this grid. These are the coordinates of the master element that you adopt in this example. In[243]:= xyco={{1,1},{1,-1},{1,0},{-1,1},{-1,-1},{-1,0},{0,1},{0,-1},{0,0}};

Give the locations of the nodal point in the element. In[244]:= me=ElementPlot[{{{1,1},{1,-1},{-1,-1},{-1,1}},{1,0},{-1,0},{0,1},{0,-1},{0,0}} , AspectRatio->1, PlotRange->{{-2,2},{-2,2}}, Axes->True];

Then calculate the completeness information for this nine-node element and obtain the interpolation functions. In[245]:= nodes9=RectangularCompleteness[9,0,0]; nodes9//TableForm

Out[246]//TableForm= In[247]:= f9=ShapeFunctions2D[nodes9,xyco,{x,y}]; f9//TableForm

Out[248]//TableForm=

Here are the x and y coordinates of the isoparametric lines defined by the interpolation functions and the nine interpolation points. In[249]:= xco=f9.{x1,x2,x3,x4,x5,x6,x7,x8,x9}; yco=f9.{y1,y2,y3,y4,y5,y6,y7,y8,y9};

Isoparametric Curves on the Deformed Element Use 25 isoparametric lines in the x - and y -directions. The variables lengthx and lengthy stand for the width and the height of the original element, and dx and dy denote the sampling intervals in the x - and y -directions. In[251]:= nx=25; ny=25; lengthx=2.; lengthy=2.; dx=lengthx/nx; dy=lengthy/ny;

As shown here, xnodes and ynodes are the x- and y- coordinates of the deformed element. The functions xmap and ymap are the mapping functions from the original element coordinates to the deformed element coordinates. In[257]:= Clear[xnodes,ynodes,xmap,ymap,cpx,cpy,p1,p2]; xnodes={x1->1., x2->1., x3->1., x4->-1.,x5->1.4,x6->-1., x7->0., x8->0., x9->0.}; In[259]:= xmap[x_,y_]=xco/.xnodes; In[260]:= ynodes={y1->1., y2->-1.,y3->0., y4->1., y5->1.1,y6->0., y7->1., y8->-1, y9->0.}; In[261]:= ymap[x_,y_]=yco/.ynodes; In[262]:= cpx=Table[{xmap[dx(nx/2+1-i),y],ymap[dx(nx/2+1-i),y]}, {i,1,nx+1}]; In[263]:= p1=ParametricPlot[Evaluate[cpx],{y,-1,1},DisplayFunction->Identity];

In[264]:= cpy=Table[{xmap[x,dy(ny/2+1-i)],ymap[x,dy(ny/2+1-i)]},{i,1,ny+1}]; In[265]:= p2=ParametricPlot[Evaluate[cpy],{x,-1,1},DisplayFunction->Identity];

This example shows the coordinates of the deformed element, which are ordered such that the nodal points are connected in the correct sequence. In[266]:= dpts={{{1.2,1.1},{0,-1},{1.1,-1.},{1.,0},{1.,1.},{0,1.},{-1,1.},{-1,0}},{0,0}}; In[267]:= de=ElementPlot[dpts, AspectRatio->1, DisplayFunction->$DisplayFunction, PlotRange->{{-2,2},{-2,2}}, Axes->True, NodeColor->RGBColor[0,1,0]];

In[268]:=

This produces the horizontal isoparametric lines on the original element. Next generate the vertical isoparametric lines on the original element. In[269]:= cpx=Table[{dx(nx/2+1-i),y},{i,1,nx+1}]; In[270]:= p1=ParametricPlot[Evaluate[cpx],{y,-1,1},DisplayFunction->Identity]; In[271]:= cpy=Table[{x,dy(ny/2+1-i)},{i,1,ny+1}]; In[272]:= p2=ParametricPlot[Evaluate[cpy],{x,-1,1},DisplayFunction->Identity]; In[273]:= Show[p1,p2, Axes->None, AspectRatio->1, DisplayFunction->$DisplayFunction];

As earlier, you next generate the mapping of this 25 × 25 grid to the deformed coordinates. In[274]:= Clear[xnodes,ynodes,xmap,ymap,cpx,cpy,p1,p2]; In[275]:= xnodes={x1->1, x2->1., x3->1., x4->-1,x5->1.4,x6->-1., x7->0, x8->0, x9->0.}; In[276]:= xmap[x_,y_]=xco/.xnodes ; In[277]:= ynodes={y1->1, y2->-1.,y3->0, y4->1.,y5->1.1,y6->0, y7->1.,y8->-1, y9->0.}; In[278]:= ymap[x_,y_]=yco/.ynodes; In[279]:= cpx=Table[{xmap[dx(nx/2+1-i),y],ymap[dx(nx/2+1-i),y]},{i,1,nx+1}]; In[280]:= p1=ParametricPlot[Evaluate[cpx],{y,-1,1},DisplayFunction->Identity]; In[281]:= cpy=Table[{xmap[x,dy(ny/2+1-i)],ymap[x,dy(ny/2+1-i)]},{i,1,ny+1}]; In[282]:= p2=ParametricPlot[Evaluate[cpy],{x,-1,1},DisplayFunction->Identity];

This generates the superimposition of the vertical and horizontal isoparametric lines in the deformed element. In[283]:= Show[p1,p2, Axes->None, DisplayFunction->$DisplayFunction];

Cintura In this example, relocate the nodes of the master element and compute the mapping functions. The lists xnodes and ynodes denote the locations of the nodal points of the deformed mesh. The mapping functions in the x- and y -coordinates are xmap and ymap , respectively. In[284]:= xnodes={x1->.8, x2->1.2, x3->.6, x4->-.8,x5->-1.2,x6->-.6, x7->0, x8->0, x9->0.}; In[285]:= xmap[x_,y_]=xco/.xnodes ; In[286]:= ynodes={y1->1, y2->-1.1, y3->0, y4->1., y5->-1.1, y6->0, y7->1.1,y8->-.7, y9->0.}; In[287]:= ymap[x_,y_]=yco/.ynodes; In[288]:= Transpose[{Map[#[[2]]&,xnodes],Map[#[[2]]&,ynodes]}]

Out[288]= Order the nodes of the deformed element so that you can mark its boundary with the plotting function ElementPlot . In[289]:= dpts={{{-1.2,-1.1},{0,-0.7},{1.2,-1.1},{0.6,0},{0.8,1.},{0,1.1},{-0.8,1.},{-0.6,0}},{0,0}};

This is how the boundary of the deformed element looks. In[290]:= de=ElementPlot[dpts, AspectRatio->1, DisplayFunction->$DisplayFunction, PlotRange->{{-2,2},{-2,2}}, Axes->True];

Visualize the magnitude of the displacements of the nodal points by superimposing de and me . In[291]:= Show[de,me];

In order to study the effect of this mapping on the interior of the element, partition the original domain into 20 × 20 squares, and map the nodes of these squares to the deformed domain. In[292]:= pl=Table[{xmap[.1(11-j),.1(11-i)],ymap[.1(11-j),.1(11-i)]},{i,1,21},{j,1,21}]; ListPlot[Partition[Flatten[pl],2],AspectRatio->1];

Similarly, you can map the nodal points of the mesh you generated earlier. You use the same connectivity matrix for both meshes so that the node numbers correspond to the same nodes in both meshes. In[294]:= MeshPlot[Map[{xmap[##]&@@#,ymap[##]&@@#}&,pts],con, PlotRange->1.5{{-1,1},{-1,1}}, AspectRatio->1, Axes->True];

Simple Bridge In this example, you will move some of the nodes of the master element a little further to generate a mesh for the bridge-like structure. The lists xnodes and ynodes denote the locations of the nodes in the deformed element. The functions xmap and ymap are the mapping functions. In[295]:= xnodes={x1->5., x2->1., x3->3., x4->-5.,x5->-1.,x6->-3., x7->0, x8->0, x9->0.}; In[296]:= xmap[x_,y_]=xco/.xnodes ; In[297]:= ynodes={y1->-1, y2->-1.,y3->-1, y4->-1.,y5->-1.,y6->-1, y7->1., y8->-.5,y9->0.}; In[298]:= ymap[x_,y_]=yco/.ynodes;

Unlike the previous mesh, the locations of the nodes are drastically changed as shown in this example. In[299]:= dpts=Transpose[{Map[#[[2]]&,xnodes],Map[#[[2]]&,ynodes]}];

In[300]:=

In[301]:= Show[me,de,PlotRange->{{-6,6},{-6,6}},AspectRatio->1];

Now apply these maps to a mesh. In[302]:= pnox=2 21; pnoy=2 21; dx=2/(pnox-1); dy=2/(pnoy-1); In[306]:= pl=Table[{xmap[dx((pnox-1)/2+1 1-j),dy((pnoy-1)/2+1-i)], ymap[dx((pnox-1)/2 +1 1-j),dy((pnoy-1)/2 + 1-i)]},{i,1,pnox},{j,1,pnoy}]; In[307]:= ListPlot[Partition[Flatten[pl],2],AspectRatio->1,PlotRange->All];

Here you plot the mesh for this model using the same procedure. In[308]:= MeshPlot[Map[{xmap[##]&@@#,ymap[##]&@@#}&,pts],con, PlotRange->{5.5{-1,1},1.5{-1,1}}, AspectRatio->1, Axes->True];

Curved Beam This section considers a curved beam and determines a mesh for it. Unlike the previous two examples, you will use elements in mappings, and a different type of master element.

In the following example, use the numbering schema for grid (nodal) points where i , j , and denote the column number, the row number, and the number of grids in the x -direction in a row, respectively. In[309]:= Show[Graphics[{ Text["i+(j-1)*n1" , {-1., -1.3}], Text["i+(j-1)*n1+1", { 1., -1.3}], Text["i+n1*j+1", { 1., 1.3}], Text["i+j*n1", {-1., 1.3}]}], ElementPlot[{{{-1,-1},{1,-1},{1,1},{-1,1},{-1,-1},{1,1}}}, DisplayFunction->Identity], PlotRange->{{-2,2},{-2,2}}, Axes->True, AspectRatio->1];

As before, you generate the connectivity matrix by using the numbering shown previously, and the coordinates of the nodal points. In[310]:= n1=3; n2=3; In[312]:= nds=Table[{{i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1}, {i+(j-1) n1,i+j n1,i+1+j n1} }, {i,1,n1-1}, {j,1,n2-1}]; In[313]:= pt=Partition[Flatten[nds],3]; In[314]:= con=(k=0;Map[{++k,#}&,pt]); In[315]:= xo=0; yo=0; In[317]:= dx=10/(n1-1); dy=2/(n2-1); In[319]:= pts=Partition[Flatten[Table[{ xo+(i-1)dx, yo+(j-1)dy}, {j,1,n2},{i,1,n1}]],2]; In[320]:= f9beam=ShapeFunctions2D[nodes9,pts,{x,y}]; f9beam//TableForm

Out[321]//TableForm= In[322]:= MeshPlot[pts,con, PlotRange->{{-1,12},{-.5,2.5}}, AspectRatio->.4, Axes->True];

In[323]:= (k=0;Map[{++k,#}&,pts])

Out[323]= Edit the last output in order to lift nodes 2, 5, and 8 in the y -direction by 0.5 unit length.

In[324]:=

Out[324]= In[325]:= ptscurved=Map[#[[2]]&,%]

Out[325]= MeshPlot produces the mesh corresponding to the coordinates of the curved beam. Notice that the connectivity of the mesh remains unchanged. In[326]:= MeshPlot[ptscurved,con, PlotRange->{{-1,12},{-.5,3}}, AspectRatio->.4, Axes->True];

Here are the x and y components of the transformation. In[327]:= Clear[xmap,ymap]; xmap[x_,y_]=f9beam.(Transpose[ptscurved][[1]]); ymap[x_,y_]=f9beam.(Transpose[ptscurved][[2]]);

Now define a finer mesh for the same domain by specifying seven nodes in the x -direction and four nodes in the y -direction. Use the same procedure introduced previously. In[330]:= n1=7; n2=4; In[332]:= nds=Table[{{i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1}, {i+(j-1) n1,i+j n1,i+1+j n1}}, {i,1,n1-1}, {j,1,n2-1}]; In[333]:= pt=Partition[Flatten[nds],3]; In[334]:= con=(k=0;Map[{++k,#}&,pt]); In[335]:= xo=0; yo=0; In[337]:= dx=10/(n1-1); dy=2/(n2-1); In[339]:= pts7=Partition[Flatten[Table[{ xo+(i-1)dx,yo+(j-1)dy},{j,1,n2},{i,1,n1}]],2];

Here is the undeformed mesh. In[340]:= MeshPlot[pts7,con, PlotRange->{{-1,12},{-.5,3}}, AspectRatio->.4, Axes->True];

By mapping the nodal points to the curved element and keeping the same connectivity matrix, you can calculate the coordinates of the nodal points of the curved beam. In[341]:= ptscurved=Map[{xmap[##]&@@#,ymap[##]&@@#}&,pts7];

Here is the mesh for the curved beam. In[342]:= MeshPlot[ptscurved,con, PlotRange->{{-1,12},{-.5,3}}, AspectRatio->.4, Axes->True];

You may use the nodal points and the connectivity matrix for this mesh in a finite element analysis. You can

further refine the mesh by changing the parameters y . Also, you can simplify various other characteristics by the parameters introduced in this section, and many different configurations can be studied. Techniques Based on Circular Elements In addition to rectangular elements, you can use circular elements in generating meshes. Although they have certain limitations, circular elements can be quite effective in the meshes in which curves are dominant, such as arches and caps. This section explores the use of such elements in meshing circular domains and discusses the use of such elements. Circular Elements In a circular element, the interpolation functions correspond to nodal points in the radial direction for a constant radius. As a result, they are independent of the radius and are the only function of the radial coordinate. For example, here you can specify the nodal locations of five nodes.

In[343]:= pnodes={0, /2, ,5 /4,7 /4,2 }; In[344]:= pon=Map[{#,1.}&,pnodes]

Out[344]= In[345]:= poCarn=Map[{Cos[#[[1]]]#[[2]],Sin[#[[1]]]#[[2]]}&,pon];

Mark the locations of nodes by assuming that the radius of the element is unity.

In[346]:= mn=Show[ParametricPlot[{Cos[t],Sin[t]},{t,0,2 }, DisplayFunction->Identity], ElementPlot[{poCarn},Axes->True,DisplayFunction->Identity], AspectRatio->1, PlotRange->{{-1.5,1.5},{-1.5,1.5}}, DisplayFunction->$DisplayFunction];

Use the function CircularElement to compute the shape functions for the element with these nodal points.

In[347]:= sf5=CircularElement[pnodes,x]

Out[347]=

You can easily verify that each of these functions is zero everywhere except at their respective nodal points. In[348]:= Map[(sf5/.x->#)&,pnodes]

Out[348]= Mapping Parts Here you use the transformation for the isoparametric representation.

In[349]:= pon={{0,1.},{ /2,.3},{ ,1.},{5 /4,1.},{7 /4,1.},{2 ,1.}}; In[350]:= rho=N[sf5.Transpose[pon][[2]]]; theta=N[sf5.Transpose[pon][[1]]];

Deform the master element as follows. In[352]:= poCarn=Map[{Cos[ #[[1]] ] #[[2]],Sin[ #[[1]] ] #[[2]]}&,pon]; In[353]:= p1=ElementPlot[{poCarn}, PlotRange->{{-1.5,1.5},{-1.5,1.5}}, Axes->True];

The next graph shows how you map the other points on the unit circle.

In[354]:= p2=Show[ParametricPlot[{Cos[t], Sin[t]},{t,0,2 },DisplayFunction->Identity],ParametricPlot[{rho Cos[theta],rho Sin[theta]}, {x,0,2 Pi},DisplayFunction->Identity], PlotRange->All, DisplayFunction->$DisplayFunction, AspectRatio->1 ];

In[355]:= Show[p1,p2,AspectRatio->1];

The lack of symmetry is attributed to the poor performance of the circular interpolation functions in general. This will become clear when these shape functions are plotted.

Two-Dimensional Circular Elements You calculate shape functions for an annulus domain by taking the cross product of those for a one-dimensional element and a circular element. In this example, the radii of the master elements are 1 unit and 2 units, respectively. In[356]:= pon1=Map[{#,1.}&,pnodes]; pon2=Map[{#,2.}&,pnodes]; In[358]:= elp=ElementPlot[{Map[{Cos[ #[[1]] ] #[[2]],Sin[ #[[1]] ] #[[2]]}&,pon2],Map[{Cos[ #[[1]] ] #[[2]],Sin[ #[[1]] ] #[[2]]}&,pon1]}, PlotRange->{{-3,3},{-3,3}}, Axes->True, AspectRatio->1];

In[359]:= Show[ParametricPlot[{Cos[t], Sin[t]},{t,0,2 },DisplayFunction->Identity],

ParametricPlot[{2Cos[t], 2Sin[t]},{t,0,2 },DisplayFunction->Identity], elp, DisplayFunction->$DisplayFunction, PlotRange->2.5{{-1,1},{-1,1}}, AspectRatio->1]; This calculates the shape functions for this concentric shape. In[360]:= sf5=CircularElement[pnodes,tco]; sR=HermiteElement1D[{1,2},0,rco]; ce=Transpose[sR].{sf5};

Equivalently, you can use the function ConcentricElement2D . In[363]:= ce2=ConcentricElement2D[{pnodes,{1,2}},{rco,tco}];

In[364]:= Map[ce/.{rco->2., tco-># }&, pnodes]//Chop

Out[364]= In[365]:= Map[ce2/.{rco->2., tco-># }&, pnodes]//Chop

Out[365]=

rotate the outer circle of the annulus by /10 and generate the mapping functions accordingly. In[366]:= n=6;

In[367]:= po1={{0,1.},{ /2,1.},{ ,1.},{5 /4,1.},{7 /4,1.0},{2 ,1.}};

In[368]:= po2={{0,2},{ /2,2. }, { ,2.},{5 /4,2.},{7 /4,2.},{2 ,2.}}; In[369]:= po2=Map[{#[[1]]+Pi/10,#[[2]]}&,po2]; In[370]:= rho1=Sum[ce[[1]][[i]] po1[[i]][[2]],{i,1,n}]//N; rho2=Sum[ce[[2]][[i]] po2[[i]][[2]],{i,1,n}]//N; In[372]:= theta1=Sum[ce[[1]][[i]] po1[[i]][[1]],{i,1,n}]//N; theta2=Sum[ce[[2]][[i]] po2[[i]][[1]],{i,1,n}]//N; In[374]:= Clear[rho, theta, rco, tco];

In[375]:= rho[tco_,rco_]=rho1+rho2; theta[tco_,rco_]=theta1+theta2; In[377]:= ElementPlot[{Map[{Cos[#[[1]]]#[[2]],Sin[#[[1]]]#[[2]]}&,po2], Map[{Cos[#[[1]]]#[[2]],Sin[#[[1]]] #[[2]]}&,po1]}, PlotRange->All, Axes->True];

Original de malla In this example, you create a mesh for the annulus with 10 radial nodal points and 4 axial nodal points. In[378]:= n1=10; n2=4; In[380]:= nds=Table[{i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1, i+j n1 }, {i,1,n1-1}, {j,1,n2-1}]; In[381]:= ins=Map[{#[[1]],#[[4]]}&,nds[[1]] ]; outs=Map[{#[[2]],#[[3]]}&,Last[nds] ]; gapc= Table[ Flatten[{outs[[i]][[1]],ins[[i]],outs[[i]][[2]]}], {i,1,Length[outs]} ]; In[384]:= conCir=Partition[Flatten[{nds,gapc}],4]; In[385]:= r1=1; r2=3; dtheta=2Pi/n1; dr=(r2-r1)/(n2-1); In[389]:= nodesRT= Partition[ Flatten[ Table[{ (i-1)dtheta, r1+(j-1) dr}, {j,1,n2}, {i,1,n1}] ], 2]//N; In[390]:= MeshPlot[Map[{#[[2]] Cos[#[[1]]], #[[2]] Sin[#[[1]]]}&,nodesRT], (k=0;Map[{++k,#}&,conCir]), PlotRange->All, AspectRatio->1, Axes->True];

Mapped Mesh Now apply the obtained mappings to the nodes of this rectangular mesh. In[391]:= newRT=Map[{theta[##]&@@#,rho[##]&@@#}&,nodesRT]; nnds=Map[{#[[2]] Cos[#[[1]]],#[[2]] Sin[#[[1]]]}&,newRT]; ncon=(k=0;Map[{++k,#}&,conCir]); In[394]:= MeshPlot[nnds,ncon, PlotRange->All, AspectRatio->1, Axes->True];

Triangular Elements Repeat the same procedure with the triangular elements. In[395]:= n1=10; n2=4; In[397]:= nds=Table[{{i+(j-1) n1,i + (j-1) n1 +1,i+1+j n1}, {i+(j-1) n1,i+j n1,i+1+j n1} }, {i,1,n1-1}, {j,1,n2-1}]; In[398]:= pt=Partition[Flatten[nds],3]; In[399]:= gaps=Table[{{(i-1)n1+1,i n1+1, (i+1)n1}, {(i-1)n1+1,i n1,(i+1)n1}},{i,1,n2-1}]; In[400]:= conCir=Partition[Flatten[{nds,gaps}],3]; In[401]:= r1=1; r2=3; dtheta=2Pi/n1; dr=(r2-r1)/(n2-1); In[405]:= nodesRT= Partition[ Flatten[ Table[{ (i-1)dtheta, r1+(j-1) dr}, {j,1,n2}, {i,1,n1}] ], 2]//N; In[406]:= pts= Partition[ Flatten[ Table[{ xo + (i-1) dx, yo + (j-1) dy}, {j,1,n2}, {i,1,n1}] ], 2]; In[407]:= MeshPlot[Map[{#[[2]] Cos[#[[1]]],#[[2]] Sin[#[[1]]]}&,nodesRT], (k=0;Map[{++k,#}&,conCir]), PlotRange->All, AspectRatio->1, Axes->True];

El análisis de estrés 6.1 Introducción Con la Mecánica Estructural funciones, puede obtener un amplio espectro de información sobre el estado de tensión en un punto en un cuerpo deformable. Matemáticamente, el estado de tensión en un punto de un cuerpo elástico se determina por seis componentes de esfuerzo independiente y se especifica mediante un tensor de segundo orden cartesiano simétrico, también conocido como el tensor de tensiones. Los valores de estos componentes de la tensión cambian con la orientación del sistema de coordenadas en el que se define cada componente de estrés. Puede girar el sistema de coordenadas para que pueda estudiar algunas de las cuestiones prácticas de las tensiones en un punto. Por ejemplo, puede reducir los componentes de estrés, a cero en una orientación particular del sistema de coordenadas. Esta información es útil para calcular la concentración de esfuerzos en un análisis de tensión. Mecánica Estructural tiene las funciones para el cálculo de los componentes principales de estrés y dirección del esfuerzo principal de un tensor de tensiones. Incluye las funciones para el cálculo de esfuerzo cortante máximo y sus direcciones, y las funciones gráficas para trazar los planos de tensiones principales y direcciones principales del estrés. Incluso se puede dibujar los círculos de Mohr, directamente en el tensor de estado. Mecánica Estructural también ofrece una serie de ejemplos que ilustran el uso de estas funciones.

Por lo general, estudiar el estado de estrés para determinar un criterio de fallo único del tensor de tensiones. Desde un número de teorías propuestas para predecir la falla del material, en este capítulo se analizan tres de los modelos más utilizados: la distorsión máxima tensión normal, esfuerzo cortante máximo, y la teoría de la energía. 6.2 Estado de esfuerzo en un punto En un momento dado sobre una superficie, un vector de la tensión depende de la orientación (unidad de lo normal) de la superficie. Para unos vectores diferentes normal en el mismo campo de esfuerzos, el vector de tensión en la superficie asociados también debe ser diferentes. El vector de tensión en tres planos perpendiculares entre sí en un punto especifica el estado de tensión en ese punto en un continuo. Los componentes de estos vectores de tensión forman un tensor, el tensor de tensiones. Matemáticamente, el tensor de tensiones es un tensor de segundo orden cartesiano con nueve componentes de estrés. Tres componentes de esfuerzo que son perpendiculares a los planos se llaman tensiones normales. Los componentes de acción tangente a estos aviones se llaman tensiones tangenciales. Usted asume el signo de un componente de estrés es positivo cuando la dirección y el vector normal de la superficie, en la que el componente del tensor de tensiones es la actuación, son del mismo signo. De lo contrario, asumir el signo de la componente de esfuerzo es negativo.

Uso de la ShowPlane funciones de Mecánica Estructural y DisplayTogetherArray del Mathematica 4 Norma sobre paquetes de complementos, se puede ilustrar tres planos perpendiculares.

En [1]: = En [2]: DisplayTogetherArray [= {[{1,0,0} ShowPlane], [{0,1,0} ShowPlane], [ShowPlane {0,0,1 }]}];

Al utilizar la función PrincipalPlane, se especifica el origen del vector de dirección, un factor de escala, y su dirección.

En primer lugar establecer algunos valores opcionales para seleccionar una fuente predeterminada, el marco de la parcela con una caja, las redes de visualización en las caras de algunos de la carcasa, establecer el rango de la trama, determinar un punto de vista, y son los ejes de la parcela.

En [3]: =

Fuera [3] = En [4]: = opciones = {caja-> Es cierto, FaceGrids-> {{-1,0,0}, {0,1,0}, {0,0, -1}}, PlotRange-> 2 {{-1,1}, {-1,1}, {-1,1}}, ViewPoint-> {2.062, -2.275,2.052}, Ejes-> Verdadero};

Éstos son los mismos aviones con estas opciones de configuración. Si elige el factor de escala 4, el plano superficies completamente la partición del cuadro de parcela. En [5]: = = plns DisplayTogetherArray [ Graphics3D [PrincipalPlane [{0,0,0}, {0,0,1}, 4], opta],

Graphics3D [PrincipalPlane [{0,0,0}, {0,1,0}, 4], opta], Graphics3D [PrincipalPlane [{0,0,0}, {1,0,0}, 4], opta]];

Mostrar estos aviones plns en una sola parcela con la función DisplayTogether de gráficos »Gráficos» de la Mathematica 4 Norma sobre paquetes de complementos. En [6]: = [DisplayTogether Graphics3D [PrincipalPlane [{0,0,0}, {0,0,1}, 4], opta], Graphics3D [PrincipalPlane [{0,0,0}, {0,1,0}, 4], opta], Graphics3D [PrincipalPlane [{0,0,0}, {1,0,0}, 4], opta]];

Hay varias formas para representar un tensor de tensiones en la Mecánica Estructural. Ahora representan los componentes de la tensión con la letra S mayúscula e incluir la dirección de un componente de estrés como un subíndice. Como se describe en el capítulo 7, la función StressComponents genera los símbolos que representan los componentes de la tensión independiente en notación indicial.

En [7]: = = RTS StressComponents [ , Cartesiano [x, y, z], la notación -] indexada>

A cabo [7] = Se trata de una representación vectorial del tensor de tensiones simétricas. Utilice la función de VectorToTensor pasar de esta forma en una representación tensor simétrico de un estado de tensión en un punto.

En [8]: = = tns VectorToTensor [STR]

Fuera [8] = En [9]: = MatrixForm [ton]

Fuera [9] / / MatrixForm = Además de esta notación indicial, aquí se utiliza una notación funcional de los componentes de estrés.

En [10]: = [StressComponents VectorToTensor [ , Cartesiano [x, y, z]]]

A cabo [10] = En [11]: = MatrixForm [%]

A cabo [11] / / MatrixForm = 6.3 tensiones principales y direcciones Cuando el vector normal de una superficie y el vector de tensión que actúan sobre esa superficie son colineales, la dirección del vector normal se denomina una dirección del esfuerzo principal. La magnitud del vector de tensión en la superficie se llama el valor de la tensión principal. Se utiliza el PrincipalStresses función para calcular las tensiones principales del estado tensional en un punto.

En el caso de que los valores de todas las tensiones tangenciales son cero, las tensiones principales son las tensiones normales.

En [12]: =

A cabo [12] = Del mismo modo, se utiliza el PrincipalStressDirections función para determinar las direcciones de los componentes principales de estrés.

Las direcciones de los esfuerzos principales son los vectores de la unidad del sistema de coordenadas en el caso de que ningún componente de esfuerzo cortante está presente.

En [13]: =

A cabo [13] = Visualizar el primer avión en el gráfico presentado anteriormente objeto plns, que orginated en el origen del sistema de coordenadas. En [14]: = Show [Graphics3D [PrincipalPlane [{0,0,0}, {1,0,0}, 4]], opta];

Calcular las tensiones principales con un valor distinto de cero esfuerzo de corte para .

En [15]: =

A cabo [15] = Tenga en cuenta que el esfuerzo principal en la dirección z se mantiene sin cambios ya que el esfuerzo de corte se aplica en el plano xy solamente. Ahora calcular la direcciones de los esfuerzos principales de este tensor de tensiones.

En [16]: =

A cabo [16] =

Como era de esperar, ya que el componentes son iguales a cero, el sentido positivo de la coordenada z, {0, 0, 1} se mantiene como dirección del esfuerzo principal. La función de las parcelas PrincipalStressDirectionsPlot las direcciones de tensiones principales.

Demostrar que la dirección del esfuerzo principal en la dirección z se mantiene sin cambios en el estado de

estrés . Aquí el gris coordenadas representan el sistema de coordenadas. En [17]: = PrincipalStressDirectionsPlot [{1,1,1, .5,0,0}];

PrincipalPlane objetos gráficos le permiten visualizar estos planos. En primer lugar, calcular la dirección normal del plano principal. En [18]: = {d1, d2, d3} = PrincipalStressDirections [{1,1,1,1 / 2,0,0}]

A cabo [18] = Aquí están los planos esfuerzo principal de este estado de estrés. En [19]: = = aviones DisplayTogether [ Graphics3D [PrincipalPlane [{0,0,0}, d1, 5], opta], Graphics3D [PrincipalPlane [{0,0,0}, d2, 5], opta], Graphics3D [PrincipalPlane [{0,0,0}, d3, 5], opta], ViewPoint-> {0.947, -2.830,1.595}];

A determinar las tensiones principales mediante el cálculo de las tensiones en las direcciones , , }.

En [20]: = En [21]: (newstr = {d1, d2, d3}. Tns.Transpose = [{d1, d2, d3 }])// MatrixForm

A cabo [21] / / MatrixForm = De manera equivalente, el PrincipalStresses función calcula los mismos valores para un estado de estrés. En [22]: = PrincipalStresses [{1, 1, 1, 1 / 2, 0, 0}]

A cabo [22] = Otra manera de visualizar estos planos es que haga un dibujo de un cubo girado en cuyas superficies los esfuerzos principales se realizan. Utiliza la función UnitCubePlot para este fin.

En [23]: = cubo UnitCubePlot = [{5,4,7,0.01,0.03,2.91}];

El PrincipalStressDirectionsPlot función muestra la dirección del esfuerzo principal de una manera diferente. En [24]: = dirs = PrincipalStressDirectionsPlot [{5,4,7, 0,01, .03,2.91}];

De extraer el sistema de coordenadas de referencia de este objeto gráfico dirs. Aquí se puede generar un gráfico independiente objeto que representa estas instrucciones.

En [25]: = Del mismo modo, también puede exacta las instrucciones esfuerzo principal de los mismos gráficos objeto de directorios. En [26]: = p1 = Graphics3D [dirs [[1,2]], en caja-> Falso];

Que representan estas cifras cubo de tres, , Y así como proporciona una imagen clara de tres dimensiones de las direcciones de los esfuerzos principales. Usted puede organizar las posiciones relativas de estos objetos gráficos utilizando los gráficos de Mathematica objeto Rectangle. En [27]: Mostrar = [Gráficos [{[Rectángulo {0,0}, {1,1}, p0], Rectángulo [{0,0}, {2,2}, cubo], Rectángulo [{1,0}, {2,1}, p1] }]];

Calcular los invariantes estrés de un tensor de tensiones con la StressInvariants función.

Este calcula que los invariantes de estrés para un estado de estrés principales.

En [28]: =

A cabo [28] =

Si se agrega un término de corte , Se puede ver cómo este esfuerzo de corte afecta a los valores de los invariantes estrés.

En [29]: =

A cabo [29] = 6.4 tensiones tangenciales máximas y direcciones En un elemento de superficie en un continuo, siempre se puede expresar el vector de tensiones en términos de un componente normal y una componente tangencial. Una cierta orientación del elemento de superficie puede demostrar que tensiones tangenciales máximas se realizan. En esta sección se considera que las tensiones tangenciales máximas y sus instrucciones de un estado de estrés dado. En primer lugar, considerar la MaximumShearStresses función.

En [30]: =

A cabo [30] = Las expresiones de los componentes de esfuerzo cortante máximo se complican cuando se incluye el componente de estrés xy en el tensor de tensiones.

En [31]: =

A cabo [31] = Al igual que el PrincipalStressDirections función, se utiliza el MaximumShearDirections función para calcular los valores de la dirección de corte máxima de un estado de estrés en un momento dado.

En las instrucciones esfuerzo principal, los componentes de corte del vector de la tensión desaparece. Por lo tanto, las tensiones tangenciales son cero en estas direcciones. Calcular las tensiones tangenciales máximas para el vector de estrés {1, 2, 3, 0, 0, 0}. En [32]: = MaximumShearStresses [{1,2,3,0,0,0}]

A cabo [32] = Las direcciones en las que estos valores de las tensiones tangenciales máximas se realizan son de interés práctico. Calcular las direcciones tangencial máxima utilizando el MaximumShearDirections función. En [33]: = MaximumShearDirections [{1,2,3,0,0,0}]

A cabo [33] =

De este resultado, el valor de esfuerzo máximo es -1, y actúa en el plano cuyo vector normal es {1 / , 0, 1 /

}. Al igual que en direcciones de los esfuerzos principales, tiene la MaximumShearDirectionsPlot función para visualizar la dirección del esfuerzo cortante máximo de un estado de estrés dado.

Esto muestra las direcciones tangencial máxima para el vector de estrés {1, 1, 1, 0.1, 0, 0}. En [34]: = MaximumShearDirectionsPlot [{1,1,1,0.1,0,0}];

6.5 Círculos de Mohr Círculos de Mohr proporcionar una representación plana de un estado de estrés en tres dimensiones. Uso de los círculos de Mohr, se puede calcular el estado de estrés en una dirección dada gráficamente. La técnica se ha utilizado por más de 100 años. Aunque la tecnología actual del equipo hace el cálculo de los estados de estrés más fácil, Mecánica Estructural incluye el método para su importancia histórica y de instrucción. La función MohrsCircles genera círculos de Mohr el por un estado de estrés dado.

Las áreas grises en los círculos de Mohr representan los estados de estrés que puede hacerse realidad cambiando la orientación del sistema de coordenadas de un estado de estrés dado. Aquí generar círculos de

Mohr para el vector de estrés {1, 2, 4, 0, 0, 0}. El eje x (marcado con ) Es la componente de tensión normal, y

el eje Y (marcado con ) Es la tangente (corte) de los componentes. Calcular la tracción en un plano de las que figura el vector normal utilizando un método gráfico basado en la técnica utilizada en los círculos de Mohr. El MohrsCirclesTractions función genera un par de arcos.

El punto de cruce de estas dos curvas de MohrsCirclesTractions da la tangente y componentes normales de la

presión sobre el elemento de superficie cuya dirección es , , ).

En [35]: =

En [36]: = p2 MohrsCirclesTraction = [{1,2,4,0,0,0}, {1,2,1}];

En [37]: = p3 MohrsCirclesTraction = [{1,2,4,0,0,0}, {1,2,3}];

En [38]: =

Los componentes aproximada normal y tangencial de este estado son {3.205263, 1.07034}. Puedes encontrar las instrucciones para la lectura de coordenadas de un punto en un diagrama de dos dimensiones eligiendo la opción "Obtener gráficos Coordenadas en el menú de entrada en la barra de herramientas. Superponer los círculos de Mohr para este estado de estrés y la tracción en las curvas para ilustrar el punto de cruce de las dos curvas se encuentra en la parcela círculo. En [39]: = Show [p4, p1, p2, p3, PlotRange-> Todos];

El NormalShearStresses función calcula la tensión normal y los componentes de corte para el principal dado tensiones y dirección.

Aquí utilizar valores exactos para el vector de estado de estrés {1, 2, 4} y su vector de dirección. En [40]: = NormalShearStresses [{1,2,4}, {1,2,3} / Sqrt [1 4 9]]

A cabo [40] =

Como era de esperar, este resultado es exacto. Con el fin de compararlo con el resultado de la gráfica obtenida mediante MohrsCirclesTraction anterior, {3.205263, 1.07034}, calcular los valores numéricos de este resultado utilizando la función de N. En [41]: = N [%]

A cabo [41] = Consideremos ahora un ejemplo más complicado con las tensiones tangenciales presente. En [42]: = RTS = {} 10.0,2.0,7.0,1.0,0.5,1.5

A cabo [42] = Este es el estado de estrés en forma tensorial. En [43]: = VectorToTensor [STR] / / MatrixForm

A cabo [43] / / MatrixForm = Producir los círculos de Mohr para este estado de estrés. En [44]: = p1 = MohrsCircles [RTS, PlotRange-> Todos];

Gráficamente calcular la tensión normal y los componentes de corte en la dirección (1, 2, 3). En [45]: = p2 = MohrsCirclesTraction [RTS, {1,2,3} / Sqrt [14]];

También puede calcular estos valores utilizando NormalShearStresses. En primer lugar calcular las tensiones principales. En [46]: = = pss PrincipalStresses [STR]

A cabo [46] = Calcular las componentes normal y tangencial de las tensiones en esa dirección. En [47]: = NormalShearStresses [Clasificación] [pss, {1,2,3} / [Sqrt 1 4 9]]

A cabo [47] = Como se muestra en los últimos ejemplos círculos de Mohr, que gráficamente puede calcular las tensiones principales de este estado de tensión con PrincipalStresses. En [48]: = Show [p1, p2, PlotRange-> Todos los aspectRatio-> 1];

Uso de la PrincipalStresses funciones y NormalShearStresses, a calcular y tangencial componentes normales de un estado de estrés dado. Ahora, consideremos el problema inverso, es decir, las direcciones se calculan a partir principales dadas las tensiones y los componentes de tensión normal y cortante. Utilice el NormalShearDirections función para calcular los cosenos directores del plano en el que normal y esfuerzo cortante se hace hincapié en una determinada cuenta de los componentes principales de estrés.

Ahora calcular la dirección en la que los componentes dados normal y cortante son {8,7, 2,4} para los valores de tensión principal {10.275, 7.22, 1.50}. En [49]: = NSD NormalShearDirections = [{10.275, 7.22, 1.50}, {8.7,2.4}]

A cabo [49] = Este es el plano en el que estos valores de la tensión normal y esfuerzos de corte se realizan. En [50]: = Show [Graphics3D [PrincipalPlane [{0,0,0}, NSD, 5]], opta];

Usted puede verificar estos valores con el NormalShearStresses función. En [51]: = NormalShearStresses [{10.275, 7.22, 1.50}, NSD]

A cabo [51] = 6.6 Teorías No En esta sección se utiliza la funcionalidad de Mecánica Estructural considerar tres criterios de falla fundamental:

teoría de la máxima tensión normal

teoría de la máxima tensión de corte

la distorsión de la teoría de la energía 6.6.1 La Teoría de la máxima tensión normal Esta teoría sencilla se incluye sólo por su interés histórico. Sus predicciones a veces resultan en diseños inseguros, y que no está de acuerdo con los datos experimentales (por ejemplo, el análisis de la torsión de barras). Por lo tanto, no se recomienda para el uso en diseños modernos. El máximo estados normales teoría del estrés que la falta de material se produce siempre que el mayor esfuerzo principal es igual a la resistencia del material.

Según esta teoría, por los esfuerzos principales, , Cuando el criterio de fallo es el esfuerzo de

rendimiento, el fracaso se produce cada vez que es igual a la resistencia a la fluencia a la tracción, o es igual al valor negativo de la resistencia a la fluencia a la compresión. El criterio de rotura de rendimiento se utiliza sobre todo para los materiales dúctiles. Para materiales frágiles, la resistencia última se utiliza como criterio de fracaso, y esta teoría predice que el

hecho se produce siempre es igual a la resistencia a la tracción, o es igual al valor negativo de la resistencia a la compresión máxima. En el ejemplo siguiente se muestra cómo las funciones introducidas en este capítulo se pueden adoptar en un problema de diseño. Suponga que los resultados de análisis de tensión en un tensor de tensiones (en MPa) de la siguiente manera. En [52]: = VectorToTensor [{300,450, -300,10,50, x}] / / MatrixForm

A cabo [52] / / MatrixForm =

Aquí es el componente de la tensión, que varía en función de la magnitud de las fuerzas aplicadas. Su tarea es encontrar el valor máximo de x de un material cuya compresión límites elásticos y resistencia a la tracción de 600 MPa y 400 MPa, respectivamente. Para x = 0, no hay error se produce porque las tensiones principales componentes son entre 600 MPa y -400 MPa. En [53]: = PrincipalStresses [{300,., 50 450.., -300,., 0 10..}]

A cabo [53] = Para resolver este problema de forma gráfica, primera marca los límites de seguridad del diseño. En [54]: = = límites de parcela [{600, -400}, {x, 10500}, PlotStyle-> {RGBColor [1,0,0]}];

Representar gráficamente los valores de estas tres tensiones principales cambiando el valor de x. En [55]: = = maxnormal Parcela [Evaluar [PrincipalStresses [{300,450, -300,10,50, x }]],{ x, 0500}];

Mediante la superposición de estas dos parcelas, se puede observar que dos de las principales tensiones entre los límites de seguridad del material en dos puntos. En [56]: = Show [{maxnormal, límites}];

Por lo tanto, = 286,98 MPa. 6.6.2 El corte máxima tensión Teoría La teoría del esfuerzo cortante máximo se basa en el rendimiento, por lo tanto sólo se puede utilizar para los materiales dúctiles. La teoría dice que cada vez que comienza dando el esfuerzo cortante máximo en un elemento mecánico alcanza la máxima tensión de corte experimental del material del elemento. Según esta teoría, la fuerza de la producción de corte es la mitad de la fuerza de la producción normal.

El esfuerzo cortante máximo es ( - ) / 2, donde son las tensiones principales. Este punto está localizado en el punto más alto de los círculos de Mohr. En [57]: = MohrsCircles [{300,450, -300,10,50,285}];

En [58]: = {g3, g2, g1 =} Ordenar [PrincipalStresses [300.}, 450, -300,10,50,1] {]

[58] = En [59]: = (G1-G3) / 2

A cabo [59] = Trazar el esfuerzo cortante máximo en función de x. En [60]: = = maxshear Parcela gs [= Evaluar [Ordenar [PrincipalStresses [{300 [., 450, -300,10,50, }]]];. x 5 (gs [[1]]-gs [ 3 x ]]),{, 0500}];

Según esta teoría, para un material con un límite elástico de 1000 MPa, los límites de la resistencia a la fluencia en cortante son -1000 / 2 = - 500 MPa y 1000 / 2 = 500 MPa. En [61]: = = límites de parcela [{1000 / 2, -1000 / 2}, {x, 10500}, PlotStyle-> {RGBColor [1,0,0]}];

Superposición de esta parcela y las líneas límite de seguridad muestra la ubicación de los valores límite de x. En [62]: = Show [maxshear, límites];

La teoría de corte máxima es más conservadora que la teoría de la tensión normal de trabajo máxima. Los resultados de la teoría cortante máximo siempre en el "lado fuerte". Las coordenadas del punto aproximado en

que el rendimiento comienza son {323,86 - 498,98}: = 323,86 MPa.

6.6.3 La teoría de la energía de distorsión La teoría de la energía de distorsión también se conoce como teoría de la energía tanto en el corte y la teoría de von Mises-Hencky. Al igual que la teoría cortante máximo, esta teoría es sólo para los materiales dúctiles. La teoría de la energía produce la distorsión de los niveles de estrés más conservadores entre los tres métodos considerados en este capítulo. Usando esta teoría, aquí es el criterio para el comienzo de la producción.

En esta expresión, es la fuerza de la producción material, y , Y son las tensiones principales.

Resolver esta igualdad de y la trama con respecto a x como en el ejemplo anterior para el mismo estado de estrés. En [63]: maxshear = Parcela [= gs Evaluar [Ordenar [PrincipalStresses [{300. =, 450, -300,10,50, x }]]]; Sqrt [0.5 ((gs [[1]] - gs [[2]]) ^ 2 + (gs [[2]]-gs [[3]]) ^ 2 + (gs [[3]]-gs [[1]]) ^ 2)], {x , 0500}];

Dibujar las líneas de limitación para el mismo material utilizado en el ejemplo anterior. En [64]: = = límites de parcela [{1000 -1000}, {x, 10500}, RGBColor PlotStyle-> [1,0,0], Identidad DisplayFunction-> ];

Superposición de estas dos parcelas de muestra para qué valor de x rendimiento comienza. En [65]: = Show [maxshear, límites];

Las coordenadas para el punto aproximado en que se comienza dando {416,27, 979,28}. Ecuaciones de Administración de la elasticidad 7.1 Introducción A menudo en la solución de problemas de elasticidad, es necesario manipular algebraicamente las ecuaciones de la teoría de la elasticidad. Por ejemplo, en la generación de las ecuaciones de un problema de análisis de tensión de dos dimensiones, se elimina la dependencia en una coordenada en las ecuaciones en tres dimensiones. El problema resultante es generalmente mucho más fácil de manejar. Del mismo modo, manipular ecuaciones elasticidad para encontrar soluciones aproximadas a las ecuaciones cuyas soluciones exactas son extremadamente difíciles de encontrar, si es posible. Mathematica tiene un gran número de instalaciones para manipular expresiones matemáticas. Uso de coincidencia de patrones, la funcionalidad de expansión de la serie, y la manipulación de diversos métodos, puede aplicar las técnicas de aproximación muy eficaz en el entorno Mathematica. Además, debido a las ecuaciones de la teoría de la elasticidad tiende a ser complicado, largo, y por lo tanto propenso a errores en la manipulación, la realización de análisis en Mathematica aumenta la eficiencia y exactitud. El objetivo de este capítulo es en las ecuaciones de la teoría de elasticidad lineal en tres tipos de sistemas de coordenadas, es decir, cartesianas, cilíndricas y coordenadas esféricas. El capítulo presenta las funciones para hacer frente a los coeficientes de elasticidad, las relaciones tensión-desplazamiento, relaciones constitutivas, y el

equilibrio y las ecuaciones elastodinámica. Puede generar las ecuaciones en dos tipos de formatos: funcional y indicial. En formato funcional, la coordinación de la dependencia y sus derivados con respecto a las coordenadas de las cantidades físicas, tales como tensión, estrés, y el potencial, se dan en forma de función de Mathematica. Por ejemplo, en forma funcional, u [x] [x, y, z] denota la componente x del vector desplazamiento

en coordenadas cartesianas. La derivada de este término con respecto a x en notación indicial es . 7.2 Notaciones 7.2.1 Sistemas de coordenadas y componentes de los desplazamientos El paquete GoverningEquations cubre los tres más utilizados los sistemas de coordenadas: cartesianas, cilíndricas y esféricas. Todas las expresiones en el paquete están disponibles en dos formatos: funcional y indicial.

Esta es la forma funcional de los componentes de los desplazamientos en coordenadas cartesianas.

En [1]: = En [2]: =] DisplacementComponents [u cartesiano, [x, y, z]

Opciones para las funciones: DisplacementComponents, StrainComponents, StressComponents, ForceComponents, PotentialComponents, StrainDisplacementRelations, IsotropicStressStrainRelations, EquilibriumEquations y ElastodynamicsEquations. En la notación inicial, se utiliza subíndices para denotar las dependencias y los derivados de la relación con las coordenadas. Por ejemplo, mostrar los desplazamientos en coordenadas cartesianas con la notación de opción en indexada. En [3]: = DisplacementComponents [u, [cartesianas x, y, z],> indexada-notación]

Fuera [3] = Del mismo modo, puede obtener los componentes de desplazamiento en coordenadas cilíndricas.

En [4]: =

Fuera [4] = Que denotan un derivado con respecto a una coordenada por una coma y la coordinación. Por ejemplo, la

derivada de la componente x del vector de desplazamiento con respecto a la coordenada x se representa en la mano derecha secundarios a largo plazo de la siguiente relación. Usted también puede obtener la radiografía de los derivados de las condiciones de desplazamiento en la notación indicial.

En [5]: =

Fuera [5] = Usted puede expresar las ecuaciones en notación indicial. Puede obtener la primera de las relaciones de desplazamiento-deformación mediante el establecimiento de la notación opción para indexada, es decir, la notación -> indexada.

En [6]: = [StrainDisplacementRelations , [U, r cartesiana, , ], ] Indexada de notación-> [[1]]

Fuera [6] =

Con el fin de evitar la multiplicación de los términos indicial, como el índice del término anteriormente, el uso HoldForm para envolver las suscripciones.

En [7]: =

A cabo [7] / / FullForm = Usted todavía puede manipulatethe términos en esta expresión, sin embargo.

En [8]: =

Fuera [8] = Puede indicar los derivados en forma funcional con la derivada Dt función total. Esta es la misma expresión en forma funcional.

En [9]: = [StrainDisplacementRelations , [U, r cartesiana, , ]] [[1]]

Fuera [9] = La forma completa de esta ecuación se da, cuando este se muestra cómo utilizar HoldForm para las ecuaciones en forma funcional. El uso de HoldForm aquí evita la evaluación de los términos en las ecuaciones diferenciales.

En [10]: = A cabo [10] / / FullForm =

Como ya se ha demostrado, la función DisplacementComponents genera una lista de los componentes de desplazamiento en un sistema de coordenadas que figuran en uno o indicial formas funcionales. El formato por defecto es la forma funcional. En [11]: =] DisplacementComponents [u cartesiano, [x, y, z]

A cabo [11] = Además de establecer la notación opción, puede cambiar las formas de expresiones y funcional entre las representaciones indicial con el IndicialForm funciones y FunctionalForm.

En [12]: =

A cabo [12] = Del mismo modo, el FunctionalForm función convierte las expresiones en forma indicial en forma funcional.

En [13]: =

A cabo [13] =

En [14]: =

A cabo [14] / / FullForm = Tenga en cuenta que los derivados en forma funcional son envueltos por HoldForm y la derivación está representado por el Dt función derivada total. Estos convenios son muy importantes para tener en cuenta al manipular las expresiones generadas en Mecánica Estructural. También es especialmente digno de mención que no existe una coordinación de la dependencia en los términos en una expresión indicial, por lo tanto, debe

realizar coordinar las operaciones a cargo, como derivación de expresiones funcionales por las prótesis de cuidado. Esto da lugar a la expresión en la representación indicial.

En [15]: =

A cabo [15] =

En [16]: =

A cabo [16] =

En [17]: =

A cabo [17] =

En [18]: =

A cabo [18] = 7.2.2 Componentes de tensión El estado de tensión en un punto en un cuerpo elástico se representa como un tensor de segundo orden simétrico. Puede obtener los símbolos de los seis componentes del estado de deformación mediante la función StrainComponents en un sistema de coordenadas.

Los componentes de la tensión en las formas funcionales y indicial se dan en las coordenadas cartesianas.

En [19]: = StrainComponents [ , Cartesiano [x, y, z]]

A cabo [19] =

En [20]: =

A cabo [20] = Nosotros representamos el estado de tensión en el tensor de forma mediante el VectorToTensor función debido a que el tensor de deformaciones es simétrica.

En [21]: =

A cabo [21] / / MatrixForm = Éstos son los componentes de la tensión en coordenadas cilíndricas y esféricas en el formato de salida indicial.

En [22]: = StrainComponents [ , R [cilíndricos, , Z],] indexada> Notación-

A cabo [22] =

En [23]: = StrainComponents [ , R [esférica, , ]] Indexada de notación->

A cabo [23] = 7.2.3 Componentes de estrés Al igual que el estado de tensión en un punto en un cuerpo elástico, el estado tensional en un punto es un tensor de segundo orden simétrico. Está representada por seis variables independientes.

En [24]: = StressComponents [ , Cartesiano [x, y, z]]

A cabo [24] =

En [25]: =

A cabo [25] =

En [26]: =

A cabo [26] / / MatrixForm = Éstos son los componentes de estrés en coordenadas cilíndricas en forma funcional.

En [27]: = [sigma StressComponents, cilíndricas r [, , Z]]

A cabo [27] = Esto representa los componentes de estrés en coordenadas cilíndricas y esféricas en forma indicial.

En [28]: = StressComponents [ , R [cilíndricos, , Z],] indexada> Notación-

A cabo [28] =

En [29]: = StressComponents [ , R [esférica, , ]] Indexada de notación->

A cabo [29] = 7.2.4 Los componentes del cuerpo de la Fuerza Un vector que representa la fuerza jurídica que actúe en un punto en un continuo. Obtener los componentes de la fuerza de cuerpo por unidad de masa en las coordenadas cartesianas mediante la función ForceComponents.

En [30]: = ForceComponents [f, [cartesianas x, y, z],-> indexada de notación]

A cabo [30] = Las siguientes son las fuerzas del cuerpo para varios sistemas de coordenadas se generan en las formas funcionales y indicial. En [31]: = ForceComponents [f, [cartesianas x, y, z]]

A cabo [31] =

En [32]: = ForceComponents [f, r [cilíndricos, , Z]]

A cabo [32] =

En [33]: = ForceComponents [f, r [cilíndricos, , Z],] indexada> Notación-

A cabo [33] =

En [34]: = ForceComponents [f, r [esférica, , ]]

A cabo [34] =

En [35]: = ForceComponents [f, r [esférica, , ]] Indexada de notación->

A cabo [35] = 7.2.5 escalar y potencial vector En elastodinámica, que expresan las componentes de desplazamiento en función de dos posibles funciones: escalares y vectoriales. Utiliza PotentialComponents para representar los componentes del vector desplazamiento potencial y las funciones escalares. u = + = + de =

Generar los símbolos de las posibles funciones en forma indicial.

En [36]: = PotentialComponents [ , , Cartesiano [x, y, z],] indexada> Notación-

A cabo [36] = En [37]: = ForceComponents [f, cartesiano [x, y, z],-> indexada de notación]

A cabo [37] = Los siguientes son los potenciales escalar y vector de desplazamiento de varios sistemas de coordenadas se generan en las formas funcionales y indicial.

En [38]: = PotentialComponents [ , , Cartesiano [x, y, z]]

A cabo [38] =

En [39]: = PotentialComponents [ , , R [cilíndricos, , Z]]

A cabo [39] =

En [40]: = PotentialComponents [ , , R [cilíndricos, , Z],] indexada> Notación-

A cabo [40] =

En [41]: = PotentialComponents [ , , R [esférica, , ]]

A cabo [41] =

En [42]: = PotentialComponents [ , , R [esférica, , ]] Indexada de notación->

A cabo [42] = 7.2.6 Coeficientes de Elasticidad Dos coeficientes puede caracterizar completamente las características elásticas de un material isotrópico. Las constantes elásticas más utilizados incluyen el módulo de Young, los coeficientes de Lamé, módulo de compresibilidad, módulo de corte, y la relación de Poisson. El segundo coeficiente de los coeficientes de Lamé a menudo se llama el módulo de módulo de rigidez o de corte en la literatura de ingeniería. La selección de los coeficientes incorrecta puede producir en las ecuaciones compacto de forma cerrada en varios tipos de problemas de elasticidad. manuales de ingeniería por lo general incluyen las tablas de conversión para este fin. En Mecánica Estructural, ConvertCoefficients se encarga de estas conversiones.

Obtener el módulo de Young y el Coeficiente de Lamé primero en términos del módulo k granel y módulo de cizalla G. Las opciones de especificar qué símbolo a utilizar para un coeficiente de elasticidad. Por ejemplo, la

segunda opción LameCoefficients -> { , } En opte especifica que los símbolos { , } Se utilizan para los coeficientes de Lamé.

En [43]: =

En [44]: =

A cabo [44] =

En el siguiente, puede producir una tabla de todas las relaciones posibles entre las constantes elásticas

y k. El tamaño de la producción de tabla se reduce en 0.75 (Ampliación -> 0.75) para que quepa en la página. Esto carga el complemento en el paquete `DiscreteMath Combinatorica» con la que calcular las permutaciones y combinaciones.

En [45]: =

En [46]: = Todos los pares posibles de los elementos de CList se calculan.

En [47]: = La función f1 calcula todos los posibles pares del conjunto resultante después de un conjunto de elementos se quitan de CList.

En [48]: =

Esto produce una tabla de conversión para y k.

En [49]: = A cabo [49] / / TableForm =

Usando el cuadriculado y funciones DisplayForm en Mathematica, puede crear la representación tabular de una

tabla de conversión. Aquí los coeficientes de Lamé y se expresan en términos de granel módulo k, de la

relación de Poisson , Y módulo de Young

7.3 Desplazamiento de tensión-relaciones Los componentes del tensor de deformaciones en un punto están relacionadas con los derivados del vector desplazamiento.

En [50]: = StrainComponents [ , Cartesiano [x, y, z],] indexada> Notación-

En esta salida, el componente de la cepa representa el alargamiento de la unidad en un punto en la dirección

x, es decir, , es ( + ), Y así sucesivamente. Representar a los componentes de la tensión en forma tensorial utilizando la función VectorToTensor ya que el tensor de deformaciones es simétrica.

En [51]: = StrainComponents [VectorToTensor [ , Cartesiano [x, y, z],] indexada> Notación-] / / MatrixForm

Generar el desplazamiento de las relaciones, la tensión en los tres tipos de sistemas de coordenadas mediante el StrainDisplacementRelations función.

En coordenadas cartesianas, las relaciones entre los componentes de la tensión y los desplazamientos se muestran.

En [52]: = [StrainDisplacementRelations , U, cartesiano [x, y, z], indexada]>-notación / / TableForm

A cabo [52] / / TableForm = Aquí están las relaciones tensión-desplazamiento isotrópico en coordenadas cilíndricas.

En [53]: = [StrainDisplacementRelations , Cilíndricos [r u, , Z], indexada]>-notación / / TableForm

A cabo [53] / / TableForm =

Usted puede dar a las mismas relaciones en forma funcional.

En [54]: = [StrainDisplacementRelations , Cilíndricos [r u, , Z]]

A cabo [54] = El desplazamiento de las relaciones tensión-se vuelven más complicados en coordenadas esféricas.

En [55]: = [StrainDisplacementRelations , Esférica [r u, , ]] / / TableForm

A cabo [55] / / TableForm = 7.4 Las relaciones tensión-deformación Las relaciones de tensión-deformación, también conocida como las relaciones constitutivas, son los generalizada de Hook ley para los cuerpos isótropos homogéneos. Uso de la función IsotropicStressStrainRelations Usted puede calcular.

Esto devuelve las relaciones en coordenadas cartesianas.

En [56]: = = contras IsotropicStressStrainRelations [ , , { , }, Cartesiano [x, y, z],] indexada> Notación-/ / TableForm

A cabo [56] / / TableForm = Esto genera las mismas expresiones en forma funcional.

En [57]: = [IsotropicStressStrainRelations , , { , }, Cartesiano [x, y, z]]

A cabo [57] =

Por ejemplo, aquí se puede sustituir a los coeficientes de Lamé con el módulo de Young y la relación de

Poisson en las relaciones tensión-deformación en coordenadas cartesianas.

En [58]: =

[58] = Una vez que haya las sustituciones, puede obtener las relaciones constitutivas en términos del módulo de Young y el coeficiente de Poisson. En [59]: = (contras / .conv) / / TableForm

A cabo [59] / / TableForm = Aquí están las relaciones constitutivas en coordenadas cilíndricas.

En [60]: = [IsotropicStressStrainRelations , , { , }, R [cilíndricos, , Z]] / / TableForm A cabo [60] / / TableForm =

Estas son las relaciones constitutivas en coordenadas esféricas.

En [61]: = [IsotropicStressStrainRelations , , { , }, R [esférica, , ]] Indexada> Notación-/ / TableForm

A cabo [61] / / TableForm = También puede representar las relaciones tensión-deformación en términos de los componentes de la tensión por la solución de las ecuaciones para los componentes de la cepa. Utilizar los componentes de la tensión en forma indicial como variables para resolver las ecuaciones de la ecuaciones.

En [62]: = = RTS StrainComponents [ , Cartesiano [x, y, z],] indexada> Notación-

A cabo [62] =

En [63]: = En [64]: = = {cepas Resuelve [las ecuaciones, RTS]} / / TableForm

A cabo [64] / / TableForm =

Siguiente sustituir los coeficientes de Lamé con el módulo de Young y la relación de Poisson .

En [65]: =

A cabo [65] =

Por sustitución y simplificación, se puede expresar estas ecuaciones en una forma compacta en términos de y

.

En [66]: =

A cabo [66] / / TableForm = Esto simplifica los resultados en una forma más compacta.

En [67]: =

A cabo [67] / / TableForm = 7.5 Ecuaciones de equilibrio A generar las ecuaciones de equilibrio, considerando las condiciones de equilibrio estático en un cuerpo elástico entre lo interno y externo caso dinámico forces.The incluye los términos de aceleración y las fuerzas dinámicas externas en estas ecuaciones de equilibrio.

Esto produce las ecuaciones de equilibrio en coordenadas cartesianas.

En [68]: =

A cabo [68] / / TableForm = Utilizando el equilibrio dinámico de ecuaciones en coordenadas cilíndricas es más útil en casos en los que dan las condiciones de frontera en términos de expresiones sencillas en coordenadas cilíndricas. Aquí usted puede generar el equilibrio dinámico de ecuaciones.

En [69]: = EquilibriumEquations [ , U, f, , R t, [cilíndricos, , Z], ] Indexada de notación-> / / TableForm

A cabo [69] / / TableForm = Usted puede obtener las mismas ecuaciones en coordenadas esféricas.

En [70]: = EquilibriumEquations [ , U, f, , R t, [esférica, , ], ] Indexada de notación->

A cabo [70] = 7.6 Ecuaciones elastodinámica Puede separar las ecuaciones de movimiento en un medio homogéneo isótropo en dos conjuntos independientes de ecuaciones usando los potenciales de desplazamiento. Los potenciales de desplazamiento, que son una función escalar y función vectorial, reducir las ecuaciones que rigen en dos ecuaciones de onda:

una ecuación escalar en el potencial escalar y un vector de la ecuación en el potencial vector . u = + = + de =

ElastodynamicsEquations [ , , {CL, CT}, t, cartesiano [x, y, z], indexada]>-notación / / TableForm

A cabo [71] / / TableForm =

La primera ecuación en esta producción corresponde a la ecuación para el potencial escalar , Mientras que en

los próximos tres ecuaciones en la segunda lista son para el potencial vector . Puede expresar la corte (transverso) y longitudinal (presión) velocidades de onda en términos de los coeficientes de Lamé y la densidad de masa de la siguiente manera.

= y =

En [72]: =

En [73]: =

A cabo [73] =

En [74]: =

A cabo [74] = Puede generar las ecuaciones de movimiento en coordenadas cilíndricas en forma de texto.

En [75]: =

A cabo [75] = Esto convierte a estas ecuaciones en forma indicial.

En [76]: =

A cabo [76] =