Este documento presenta el código MATLAB para calcular los desplazamientos de una pala eólica utilizando el método de elementos finitos. Primero se definen las propiedades del material y la geometría de la pala. Luego, se implementan las matrices de integración, masas y funciones de influencia para discretizar la pala en puntos de Gauss. Finalmente, se resuelve la ecuación diferencial utilizando el método de Stoer y se calculan los desplazamientos en puntos a lo largo de la pala en función del tiempo.
Este documento presenta la resolución de 4 problemas relacionados con la mecánica de rocas. El primer problema involucra el cálculo de tensiones principales, deformaciones y distorsión angular para un elemento sometido a tensiones. El segundo problema pide dibujar isostáticas y determinar el ancho de terreno afectado por la excavación de un túnel. El tercer problema requiere calcular el módulo de elasticidad y coeficiente de Poisson para una probeta sometida a compresión. El cuarto problema implica obtener diversos módulos y coef
Este documento presenta la resolución de 4 problemas relacionados con la mecánica de rocas. El primer problema involucra el cálculo de tensiones principales, deformaciones y distorsión angular para un elemento sometido a tensiones. El segundo problema pide dibujar isostáticas y determinar el ancho de terreno afectado por la excavación de un túnel. El tercer problema requiere calcular el módulo de elasticidad y coeficiente de Poisson para una probeta sometida a compresión. El cuarto problema implica obtener diversos módulos y coef
Este documento trata sobre funciones trigonométricas. Explica conceptos como ángulo, función seno, coseno y tangente. Presenta tablas con valores de estas funciones para ángulos conocidos como 0, 30, 45, 60, 90 grados. También cubre identidades trigonométricas y representaciones gráficas de las funciones.
Este documento presenta un análisis estructural de vigas, incluyendo el cálculo de fuerzas internas como fuerza cortante y momento flector. Explica la relación entre la fuerza cortante y el momento flector a lo largo de una viga, y cómo calcular ambos efectos para diferentes cargas aplicadas. También presenta varios ejercicios de aplicación para determinar la distribución de fuerzas internas en vigas sometidas a cargas puntuales y distribuidas.
Este documento describe varios métodos numéricos para resolver sistemas de ecuaciones no lineales, incluyendo el método de punto fijo, el método de Newton, y los métodos cuasi-Newton como el método de Broyden. Explica los algoritmos de cada método, cómo calcular el jacobiano, y provee ejemplos numéricos para ilustrar su implementación.
El documento trata sobre la extensometría, que es la medida de deformaciones en componentes mecánicos sometidos a cargas. Explica que las tensiones internas no pueden medirse directamente, pero sí pueden obtenerse a partir de las deformaciones mediante conceptos como el círculo de Mohr. También relaciona las tensiones con las deformaciones a través de la ley de Hooke y los módulos de Young y de cizalladura.
Este documento describe la teoría de la relatividad y experimentos clave. Explica que el experimento de Michelson-Morley en 1887 no detectó ninguna "velocidad del éter", lo que llevó a Einstein a formular su teoría de la relatividad especial en 1905. También describe las transformaciones de Lorentz, que surgieron para resolver problemas electromagnéticos y explican por qué no se detectó el éter en dicho experimento.
Este documento contiene una guía de ejercicios resueltos sobre torque, cantidad de movimiento y trabajo. Incluye tres preguntas sobre torque que involucran calcular la fuerza necesaria para aplicar un torque dado y determinar la posición de equilibrio de una viga con masas en diferentes posiciones. También incluye tres preguntas sin resolver sobre cantidad de movimiento y trabajo. Explica detalladamente cómo resolver tres preguntas de equilibrio estático que involucran determinar las reacciones de apoyo en una viga simplemente apoyada con cargas distribuidas
Este documento presenta la resolución de 4 problemas relacionados con la mecánica de rocas. El primer problema involucra el cálculo de tensiones principales, deformaciones y distorsión angular para un elemento sometido a tensiones. El segundo problema pide dibujar isostáticas y determinar el ancho de terreno afectado por la excavación de un túnel. El tercer problema requiere calcular el módulo de elasticidad y coeficiente de Poisson para una probeta sometida a compresión. El cuarto problema implica obtener diversos módulos y coef
Este documento presenta la resolución de 4 problemas relacionados con la mecánica de rocas. El primer problema involucra el cálculo de tensiones principales, deformaciones y distorsión angular para un elemento sometido a tensiones. El segundo problema pide dibujar isostáticas y determinar el ancho de terreno afectado por la excavación de un túnel. El tercer problema requiere calcular el módulo de elasticidad y coeficiente de Poisson para una probeta sometida a compresión. El cuarto problema implica obtener diversos módulos y coef
Este documento trata sobre funciones trigonométricas. Explica conceptos como ángulo, función seno, coseno y tangente. Presenta tablas con valores de estas funciones para ángulos conocidos como 0, 30, 45, 60, 90 grados. También cubre identidades trigonométricas y representaciones gráficas de las funciones.
Este documento presenta un análisis estructural de vigas, incluyendo el cálculo de fuerzas internas como fuerza cortante y momento flector. Explica la relación entre la fuerza cortante y el momento flector a lo largo de una viga, y cómo calcular ambos efectos para diferentes cargas aplicadas. También presenta varios ejercicios de aplicación para determinar la distribución de fuerzas internas en vigas sometidas a cargas puntuales y distribuidas.
Este documento describe varios métodos numéricos para resolver sistemas de ecuaciones no lineales, incluyendo el método de punto fijo, el método de Newton, y los métodos cuasi-Newton como el método de Broyden. Explica los algoritmos de cada método, cómo calcular el jacobiano, y provee ejemplos numéricos para ilustrar su implementación.
El documento trata sobre la extensometría, que es la medida de deformaciones en componentes mecánicos sometidos a cargas. Explica que las tensiones internas no pueden medirse directamente, pero sí pueden obtenerse a partir de las deformaciones mediante conceptos como el círculo de Mohr. También relaciona las tensiones con las deformaciones a través de la ley de Hooke y los módulos de Young y de cizalladura.
Este documento describe la teoría de la relatividad y experimentos clave. Explica que el experimento de Michelson-Morley en 1887 no detectó ninguna "velocidad del éter", lo que llevó a Einstein a formular su teoría de la relatividad especial en 1905. También describe las transformaciones de Lorentz, que surgieron para resolver problemas electromagnéticos y explican por qué no se detectó el éter en dicho experimento.
Este documento contiene una guía de ejercicios resueltos sobre torque, cantidad de movimiento y trabajo. Incluye tres preguntas sobre torque que involucran calcular la fuerza necesaria para aplicar un torque dado y determinar la posición de equilibrio de una viga con masas en diferentes posiciones. También incluye tres preguntas sin resolver sobre cantidad de movimiento y trabajo. Explica detalladamente cómo resolver tres preguntas de equilibrio estático que involucran determinar las reacciones de apoyo en una viga simplemente apoyada con cargas distribuidas
Las funciones trigonométricas tienen como dominio los números reales y como rango intervalos cerrados o abiertos. El dominio de las funciones seno y coseno es todo R, mientras que su rango es [-1,1]. El dominio de las funciones tangente y secante excluye los números semienteros de π, y su rango es R para tangente y R\(-1,1) para secante.
El documento describe diferentes métodos para modelar y controlar manipuladores robóticos, incluyendo cinemática directa e inversa, dinámica de Lagrange-Euler y Newton-Euler, y el uso de redes neuronales para aproximar modelos dinámicos. También discute características de los modelos dinámicos, implementación a bajo nivel, y métodos de control como par computado y aprendizaje.
1) La mecánica cuántica introduce el principio de incertidumbre de Heisenberg, según el cual no es posible determinar simultáneamente la posición y velocidad exactas de una partícula microscópica.
2) La función de onda Ψ y la ecuación de Schrödinger describen el estado cuántico de un sistema.
3) El operador Hamiltoniano representa la energía total de un sistema cuántico, y sus autoestados son los posibles valores de la energía medible.
Este documento describe el movimiento de cohetes mediante ecuaciones diferenciales que representan las fuerzas que actúan sobre el cohete, como la gravedad y la fuerza de empuje. Se resuelve el sistema de ecuaciones numéricamente usando Matlab para calcular la trayectoria y velocidad de cohetes como función del tiempo, la masa y otras variables. Se incluyen ejemplos numéricos para ilustrar los cálculos.
deformaciones almeria- mecánica de solidosHugo Méndez
1. Este documento presenta 21 problemas relacionados con deformaciones mecánicas de materiales. Los problemas cubren temas como tensores de deformación, deformaciones principales, círculo de Mohr y análisis de deformaciones en puntos específicos de materiales.
Este documento describe las medidas estadísticas clave para distribuciones discretas, incluida la distribución binomial. Define la función de densidad, los momentos, la moda, la función característica y cómo se usan para calcular medidas como la media, la varianza, la simetría y la curtosis. Luego se centra en la distribución binomial, definiendo sus funciones básicas y cómo calcular sus momentos e incluso las medidas de funciones de la variable aleatoria.
El documento introduce los diferentes métodos de análisis sísmico de presas: 1) Análisis pseudo-estático, que considera la presa como un sólido rígido y estima las fuerzas sísmicas. 2) Análisis dinámico, que resuelve las ecuaciones del movimiento mediante el método de elementos finitos. 3) Análisis pseudo-dinámico, que calcula las fuerzas estáticas asociadas al primer modo de vibración y resuelve la estructura estáticamente. Se incluyen ejemplos de aplicación de cada
1) La tensión normal en el punto (y=-10 cm, z=8 cm) es de 6,94 MPa de compresión y la tensión cortante es de 0,626 MPa.
2) La línea neutra se encuentra en z=7 cm. Por encima hay tracción y por debajo hay compresión.
3) La tensión normal máxima es de 43 MPa y se da en la fibra superior.
4) La tensión cortante máxima es de 0,84 MPa y se da en la fibra más alejada del eje z.
Actividad usando recursos TIC
usando videos para determinar la aceleracion gravitatoria, determinación de la constante elástica de un resorte y la utilizacion de metodos numericos para la solucion de ecuaciones diferenciales de un movimiento armonico simple, oscilaciones amortiguadas y oscilaciones forzadas
Este documento presenta una teoría general para calcular tensiones debidas a flexión y corte en secciones cuya geometría no permite definir ejes principales de inercia. Se propone descomponer la flexión oblicua en coordenadas oblicuas para aprovechar los momentos de inercia conocidos. También se detallan fórmulas para calcular tensiones debidas a corte cuando el plano de corte no coincide con las líneas de fuerza, y se ilustra el método con un ejemplo de cálculo de tensiones en una sección particular.
Este documento presenta tres problemas relacionados con la resistencia a esfuerzos cortantes. El primer problema calcula los esfuerzos que actúan en un plano que forma un ángulo de 30° con el plano de máxima tensión principal. El segundo problema determina las magnitudes y direcciones de las tensiones principales dados los estados de tensión en dos planos perpendiculares. El tercer problema calcula parámetros como las tensiones efectivas principales y el ángulo de fricción interna dado el estado de tensiones en el plano de máxima tensión cortante al momento de
Este documento presenta una sesión sobre transformaciones geométricas de imágenes digitales. Explica los diferentes tipos de transformaciones como rígidas, afines y proyectivas, detallando operaciones como traslación, rotación, escalado y cizalladura. También introduce el uso de coordenadas homogéneas para representar las transformaciones de forma uniforme mediante matrices. Finalmente, muestra cómo aplicar transformaciones geométricas y combinarlas usando MATLAB.
La derivada representa la razón de cambio instantánea de una función. Se define como el límite de la razón de cambio promedio cuando el cambio en la variable independiente tiende a cero. La derivada mide cómo cambia la función cuando se modifica ligeramente la variable independiente y proporciona información sobre la tasa de cambio en cualquier punto.
Design and implementation of a real scale segwayLuis Flores Pozo
Design and implementation of a real scale segway for the program of B.Sc. Mechatronics engineering at the Catholic University of Bolivia.
#segway #mechatronics #spanish #project #engineering
Este documento describe las propiedades y características de las funciones trigonométricas seno, coseno y tangente. Explica sus dominios, rangos, períodos, amplitud, paridad, máximos, mínimos, puntos de inflexión, intervalos de crecimiento y decrecimiento. También analiza gráficas de estas funciones con diferentes valores de amplitud y período, y presenta ejemplos de aplicaciones como la astronomía, artillería, cartografía y navegación.
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...Carlos Aguilar
El documento presenta el código en MATLAB para resolver ecuaciones diferenciales ordinarias de segundo orden por los métodos de Euler y Runge-Kutta, aplicados a dos ecuaciones diferentes (A y B) con pasos de integración de 0.1, 0.01 y 0.001 segundos. Se muestran las gráficas de las soluciones obtenidas para cada método y ecuación.
El documento presenta diferentes ejemplos de gráficas en MATLAB. Incluye gráficas en 3D de funciones, matrices y funciones paramétricas. También muestra cómo dividir una figura en subgráficas y ejemplos de gráficas de funciones paramétricas. Por último, explica la representación de polinomios en MATLAB y operaciones como multiplicación, división y cálculo de raíces.
El documento trata sobre cálculo diferencial e integral. Explica que las derivadas y las integrales son herramientas fundamentales del cálculo que permiten modelar fenómenos naturales. Define la derivada como la tasa de cambio instantánea de una función y la integral como la suma de áreas bajo la curva de una función. Finalmente, presenta un ejemplo numérico sobre el número de accidentes de tráfico mensuales y cómo calcular el valor máximo, mínimo y representar la función correspondiente.
Este documento presenta un programa en Matlab para resolver un sistema de ecuaciones mediante el método gráfico. Se define un dominio para la variable x y las funciones y1 y y2. Luego se grafican y1 y y2 en la misma figura y se encuentran los índices donde se intersectan, lo que indica las soluciones del sistema. Finalmente se imprimen los índices y valores de las soluciones.
Este documento presenta un proyecto de física computacional sobre choques elásticos unidimensionales. Incluye la teoría sobre choques elásticos frontales, la resolución de un problema de ejemplo usando ecuaciones de conservación en MATLAB, y la presentación de resultados numéricos y gráficos. El proyecto simula colisiones elásticas entre dos partículas y analiza cambios en su momento lineal y energía cinética antes y después del choque.
1) Los algoritmos de agrupamiento tienen como objetivo agrupar conjuntos de valores con características similares.
2) K-means clustering y fuzzy c-means clustering son dos de los algoritmos de agrupamiento más utilizados.
3) Estos algoritmos iteran hasta minimizar la distancia entre los puntos de datos y los centroides de cada grupo.
1. El documento habla sobre curvas planas y funciones vectoriales. Define conceptos como curva suave, cerrada, simple y cómo queda parametrizada una curva plana en el espacio. También explica qué es una función vectorial y su relación con curvas espaciales.
2. Describe cómo calcular la velocidad, aceleración y vector tangente de una función vectorial, así como las reglas para derivar diferentes funciones vectoriales.
3. Explica cómo encontrar la velocidad, rapidez y aceleración de una partícula que se desplaza
Las funciones trigonométricas tienen como dominio los números reales y como rango intervalos cerrados o abiertos. El dominio de las funciones seno y coseno es todo R, mientras que su rango es [-1,1]. El dominio de las funciones tangente y secante excluye los números semienteros de π, y su rango es R para tangente y R\(-1,1) para secante.
El documento describe diferentes métodos para modelar y controlar manipuladores robóticos, incluyendo cinemática directa e inversa, dinámica de Lagrange-Euler y Newton-Euler, y el uso de redes neuronales para aproximar modelos dinámicos. También discute características de los modelos dinámicos, implementación a bajo nivel, y métodos de control como par computado y aprendizaje.
1) La mecánica cuántica introduce el principio de incertidumbre de Heisenberg, según el cual no es posible determinar simultáneamente la posición y velocidad exactas de una partícula microscópica.
2) La función de onda Ψ y la ecuación de Schrödinger describen el estado cuántico de un sistema.
3) El operador Hamiltoniano representa la energía total de un sistema cuántico, y sus autoestados son los posibles valores de la energía medible.
Este documento describe el movimiento de cohetes mediante ecuaciones diferenciales que representan las fuerzas que actúan sobre el cohete, como la gravedad y la fuerza de empuje. Se resuelve el sistema de ecuaciones numéricamente usando Matlab para calcular la trayectoria y velocidad de cohetes como función del tiempo, la masa y otras variables. Se incluyen ejemplos numéricos para ilustrar los cálculos.
deformaciones almeria- mecánica de solidosHugo Méndez
1. Este documento presenta 21 problemas relacionados con deformaciones mecánicas de materiales. Los problemas cubren temas como tensores de deformación, deformaciones principales, círculo de Mohr y análisis de deformaciones en puntos específicos de materiales.
Este documento describe las medidas estadísticas clave para distribuciones discretas, incluida la distribución binomial. Define la función de densidad, los momentos, la moda, la función característica y cómo se usan para calcular medidas como la media, la varianza, la simetría y la curtosis. Luego se centra en la distribución binomial, definiendo sus funciones básicas y cómo calcular sus momentos e incluso las medidas de funciones de la variable aleatoria.
El documento introduce los diferentes métodos de análisis sísmico de presas: 1) Análisis pseudo-estático, que considera la presa como un sólido rígido y estima las fuerzas sísmicas. 2) Análisis dinámico, que resuelve las ecuaciones del movimiento mediante el método de elementos finitos. 3) Análisis pseudo-dinámico, que calcula las fuerzas estáticas asociadas al primer modo de vibración y resuelve la estructura estáticamente. Se incluyen ejemplos de aplicación de cada
1) La tensión normal en el punto (y=-10 cm, z=8 cm) es de 6,94 MPa de compresión y la tensión cortante es de 0,626 MPa.
2) La línea neutra se encuentra en z=7 cm. Por encima hay tracción y por debajo hay compresión.
3) La tensión normal máxima es de 43 MPa y se da en la fibra superior.
4) La tensión cortante máxima es de 0,84 MPa y se da en la fibra más alejada del eje z.
Actividad usando recursos TIC
usando videos para determinar la aceleracion gravitatoria, determinación de la constante elástica de un resorte y la utilizacion de metodos numericos para la solucion de ecuaciones diferenciales de un movimiento armonico simple, oscilaciones amortiguadas y oscilaciones forzadas
Este documento presenta una teoría general para calcular tensiones debidas a flexión y corte en secciones cuya geometría no permite definir ejes principales de inercia. Se propone descomponer la flexión oblicua en coordenadas oblicuas para aprovechar los momentos de inercia conocidos. También se detallan fórmulas para calcular tensiones debidas a corte cuando el plano de corte no coincide con las líneas de fuerza, y se ilustra el método con un ejemplo de cálculo de tensiones en una sección particular.
Este documento presenta tres problemas relacionados con la resistencia a esfuerzos cortantes. El primer problema calcula los esfuerzos que actúan en un plano que forma un ángulo de 30° con el plano de máxima tensión principal. El segundo problema determina las magnitudes y direcciones de las tensiones principales dados los estados de tensión en dos planos perpendiculares. El tercer problema calcula parámetros como las tensiones efectivas principales y el ángulo de fricción interna dado el estado de tensiones en el plano de máxima tensión cortante al momento de
Este documento presenta una sesión sobre transformaciones geométricas de imágenes digitales. Explica los diferentes tipos de transformaciones como rígidas, afines y proyectivas, detallando operaciones como traslación, rotación, escalado y cizalladura. También introduce el uso de coordenadas homogéneas para representar las transformaciones de forma uniforme mediante matrices. Finalmente, muestra cómo aplicar transformaciones geométricas y combinarlas usando MATLAB.
La derivada representa la razón de cambio instantánea de una función. Se define como el límite de la razón de cambio promedio cuando el cambio en la variable independiente tiende a cero. La derivada mide cómo cambia la función cuando se modifica ligeramente la variable independiente y proporciona información sobre la tasa de cambio en cualquier punto.
Design and implementation of a real scale segwayLuis Flores Pozo
Design and implementation of a real scale segway for the program of B.Sc. Mechatronics engineering at the Catholic University of Bolivia.
#segway #mechatronics #spanish #project #engineering
Este documento describe las propiedades y características de las funciones trigonométricas seno, coseno y tangente. Explica sus dominios, rangos, períodos, amplitud, paridad, máximos, mínimos, puntos de inflexión, intervalos de crecimiento y decrecimiento. También analiza gráficas de estas funciones con diferentes valores de amplitud y período, y presenta ejemplos de aplicaciones como la astronomía, artillería, cartografía y navegación.
Solucion de Ecuaciones Diferenciales Ordinarias de Segundo Orden por Métodos ...Carlos Aguilar
El documento presenta el código en MATLAB para resolver ecuaciones diferenciales ordinarias de segundo orden por los métodos de Euler y Runge-Kutta, aplicados a dos ecuaciones diferentes (A y B) con pasos de integración de 0.1, 0.01 y 0.001 segundos. Se muestran las gráficas de las soluciones obtenidas para cada método y ecuación.
El documento presenta diferentes ejemplos de gráficas en MATLAB. Incluye gráficas en 3D de funciones, matrices y funciones paramétricas. También muestra cómo dividir una figura en subgráficas y ejemplos de gráficas de funciones paramétricas. Por último, explica la representación de polinomios en MATLAB y operaciones como multiplicación, división y cálculo de raíces.
El documento trata sobre cálculo diferencial e integral. Explica que las derivadas y las integrales son herramientas fundamentales del cálculo que permiten modelar fenómenos naturales. Define la derivada como la tasa de cambio instantánea de una función y la integral como la suma de áreas bajo la curva de una función. Finalmente, presenta un ejemplo numérico sobre el número de accidentes de tráfico mensuales y cómo calcular el valor máximo, mínimo y representar la función correspondiente.
Este documento presenta un programa en Matlab para resolver un sistema de ecuaciones mediante el método gráfico. Se define un dominio para la variable x y las funciones y1 y y2. Luego se grafican y1 y y2 en la misma figura y se encuentran los índices donde se intersectan, lo que indica las soluciones del sistema. Finalmente se imprimen los índices y valores de las soluciones.
Este documento presenta un proyecto de física computacional sobre choques elásticos unidimensionales. Incluye la teoría sobre choques elásticos frontales, la resolución de un problema de ejemplo usando ecuaciones de conservación en MATLAB, y la presentación de resultados numéricos y gráficos. El proyecto simula colisiones elásticas entre dos partículas y analiza cambios en su momento lineal y energía cinética antes y después del choque.
1) Los algoritmos de agrupamiento tienen como objetivo agrupar conjuntos de valores con características similares.
2) K-means clustering y fuzzy c-means clustering son dos de los algoritmos de agrupamiento más utilizados.
3) Estos algoritmos iteran hasta minimizar la distancia entre los puntos de datos y los centroides de cada grupo.
1. El documento habla sobre curvas planas y funciones vectoriales. Define conceptos como curva suave, cerrada, simple y cómo queda parametrizada una curva plana en el espacio. También explica qué es una función vectorial y su relación con curvas espaciales.
2. Describe cómo calcular la velocidad, aceleración y vector tangente de una función vectorial, así como las reglas para derivar diferentes funciones vectoriales.
3. Explica cómo encontrar la velocidad, rapidez y aceleración de una partícula que se desplaza
Este documento describe el uso de redes neuronales artificiales (ANN) con el método de retropropagación para sintonizar un controlador PID de una planta de segundo orden. Inicialmente se identifican los parámetros de la planta y se usa el método de Ziegler-Nichols para obtener los valores objetivo del PID. Luego se entrena una ANN para que aprenda la relación entre los parámetros de la planta y los valores del PID. Finalmente, se valida el modelo ANN controlando la planta y se compara su desempeño frente al control PID de Ziegler-
1. El documento describe varias funciones especiales matemáticas como la función gamma, función beta y otras.
2. La función gamma Γ(n) está definida como una integral y satisface una fórmula de recurrencia. Puede extenderse a valores negativos de n usando esta fórmula.
3. También se describen la función beta, aproximaciones asintóticas y series asintóticas para calcular estas funciones, y varios resultados relacionados con integrales.
Este documento describe el diseño de un filtro digital pasa altas derivado de un filtro Butterworth. Se diseñan filtros con frecuencias de corte de 50 Hz, 100 Hz, 200 Hz y 220 Hz a una tasa de muestreo de 500 Hz. Se muestran las respuestas en frecuencia de cada filtro y las señales de salida cuando se les inyectan señales senoidales de entrada a dichas frecuencias de corte.
Este documento presenta 12 soluciones de código en MATLAB para problemas de métodos numéricos. Las soluciones incluyen funciones para calcular la media, varianza, coeficiente de correlación, mínimos cuadrados, producto escalar, norma de un vector, moda y conversión de días a fecha. Cada solución presenta el código de la función, un ejemplo de uso y los resultados obtenidos.
1. El objetivo es conocer técnicas de compensación mediante respuesta en frecuencia y diseñar compensadores para satisfacer especificaciones de desempeño usando Matlab.
2. Se describen conceptos de respuesta en frecuencia y métodos de diseño de controladores como adelanto de fase y atraso de fase.
3. Se diseñan compensadores para dos sistemas para cumplir con especificaciones de margen de fase y ganancia, y error estático de velocidad.
Este documento trata sobre el movimiento curvilíneo y de proyectiles. Explica que el movimiento de cada componente de posición (x, y, z) se puede calcular usando ecuaciones de velocidad y aceleración. También presenta ecuaciones para calcular la posición, velocidad y aceleración de un proyectil en función del tiempo, considerando movimiento en el plano xy y la gravedad en la dirección y. Finalmente, propone dos ejemplos numéricos resueltos en Matlab para ilustrar estos conceptos.
Este documento describe el análisis por elementos finitos de la transferencia de calor a través de una aleta de sección transversal constante utilizando diferentes grados de polinomios de forma. Se presentan dos códigos, uno que utiliza elementos lineales de primer orden y otro que utiliza elementos lineales de segundo orden, para discretizar la ecuación diferencial que rige el problema y aproximar la solución mediante el método de los elementos finitos.
ANÁLISIS CINEMÁTICO DE MECANISMOS Unidad 2.DianaJulia10
Este documento describe el análisis cinemático de mecanismos, que incluye determinar las posiciones, velocidades y aceleraciones de las partes móviles de un mecanismo. Explica que primero se calculan las posiciones, luego las velocidades y finalmente las aceleraciones, usando incrementos pequeños de las variables de entrada. También cubre representaciones de vectores, análisis para casos donde la magnitud y orientación de un vector son variables o fijas, y ecuaciones cinemáticas para mecanismos de 4 barras y
1. El documento describe el proceso de linealización de las ecuaciones de movimiento no lineales de una aeronave mediante el uso de series de Taylor.
2. Esto permite representar el sistema no lineal original como un modelo matemático linealizado alrededor de una condición de operación nominal.
3. La linealización es útil porque permite aplicar herramientas matemáticas lineales para analizar la dinámica de vuelo y desarrollar simuladores de entrenamiento.
Este documento introduce conceptos sobre integrales de línea y de trayectoria. Define curvas, campos escalares y vectoriales. Explica cómo calcular la integral de trayectoria de un campo escalar a lo largo de una curva, así como la integral de línea de un campo vectorial, la cual mide el trabajo realizado por una fuerza a lo largo de una curva. Proporciona un ejemplo del cálculo de ambos tipos de integrales.
El Método de Bairstow es un algoritmo eficiente para encontrar las raíces de un polinomio de grado arbitrario utilizando solo aritmética real. Funciona ajustando los coeficientes de un polinomio cuadrático hasta que sus raíces también sean raíces del polinomio original, permitiendo determinar las raíces de forma iterativa hasta resolver el polinomio completamente.
Este documento presenta los conceptos clave de la integral indefinida y el método de sustitución algebraica. Explica la definición de la integral indefinida y la antiderivada de una función, así como propiedades y fórmulas básicas de integración. También cubre ejemplos de cálculo de integrales mediante sustitución algebraica y aplicaciones como el crecimiento poblacional. Finalmente, incluye conclusiones sobre los principales puntos tratados y una bibliografía de referencia.
Este documento presenta cuatro ejercicios de cálculo vectorial que involucran integrales de funciones vectoriales. El primer ejercicio calcula una integral vectorial resolviendo cada componente de manera independiente. El segundo ejercicio calcula el límite de una función vectorial. El tercer ejercicio calcula una integral escalar. El cuarto ejercicio calcula la longitud de arco de una curva.
La energía radiante es una forma de energía que
se transmite en forma de ondas
electromagnéticas esta energía se propaga a
través del vacío y de ciertos medios materiales y
es fundamental en una variedad naturales y
tecnológicos
1. Introduccion a las excavaciones subterraneas (1).pdfraulnilton2018
Cuando las excavaciones subterráneas son desarrolladas de manera artesanal, se conceptúa a la excavación como el “ que es una labor efectuada con la mínima sección posible de excavación, para permitir el tránsito del hombre o de
cémilas para realizar la extracción del material desde el
frontón hasta la superficie
Cuando las excavaciones se ejecutan controlando la sección de excavación, de manera que se disturbe lo menos posible la
roca circundante considerando la vida útil que se debe dar a la roca, es cuando aparece el
concepto de “ que abarca,
globalmente, al proceso de excavación, control de la periferia, sostenimiento, revestimiento y consolidación de la excavación
Los puentes son estructuras esenciales en la infraestructura de transporte, permitiendo la conexión entre diferentes
puntos geográficos y facilitando el flujo de bienes y personas.
1. ANEXO: PROGRAMAS DE MATLAB
CÁLCULO DE DESPLAZAMIENTOS
HOMERBUCLE.M
clear all;
global E;
global IX; % direccion general de batimiento
global IY; % direccion general de arrastre
global IXY; % producto de inercia para esos ejes.
global K;
global area;
global G;
global modtor;
global Kt;
global CL;
global L;
global planosZ;
%global xi;
%global x;
global temps0;
%%%%%%%%%%%% Propiedades del material: material sandwich.%%%%%%%%%%%%%
E=1.2261e10; %2.6733e+010; Modulo elastico del material(N/m2)
K=5/6; % Rigidez de la viga (para una viga de seccion rectangular toma
este valor)
nu=0.3; % Coeficiente de Poisson
%G=1.0282e+010;
G=2.3e+009; % Modulo a cortante del material
Kt=1e15; %-0.0304e6 % Si no hay acoplamiento Kt=-infinito. %
Acoplamiento flexion-torsion
ro=857.7; %densidad del material sándwich (kg/m3)
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%Geometria%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%
% Datos iniciales para una viga de geometria cuadrada:
%base=2.5; % base(m)
%hauteur=0.2*base; % altura(m)
L=26; % longitud de la viga(m)
%I=(base*hauteur^3)/12; % momento de inercia respecto al eje x de la
seccion (Ix)
%A=base*hauteur; % area de la seccion rectangular
%J=(1/12)*base*hauteur*(base*base+hauteur*hauteur); % momento polar de
inercia de la seccion: J=Ix+Iy
%Is=ro*J; % elemento de la matriz de masas(kg*m)
2. % A continuacion modificaremos los valores de la geometria para poder
% obtener una representacion mas compleja y real de la pala.
%%%%%%%%%%% datos que definen la geometria %%%%%%%%%%%%%%%%%%%
% Se encuentran guardados en el mat-file geometria, si se quieren
modificar
% los datos de la pala, hay que modificarlos en los respectivos
programas y
% correr el script palahomer.m que nos modificara las variables del
% mat-file ''geometria''.
load geometria
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Una vez tenemos estos valores, podemos obtener las variables para
% cualquier punto de la pala mediante interpolacion con pchip.
%%%%%%%%%%% Otras variables importantes del
programa%%%%%%%%%%%%%%%%%%%%%%
CL=1;
type=2; % Si es uno analizaremos el estado 1 de carga.
a=[7:2:25]./L; % vector de puntos de aplicacion
(adimensional)de las cargas exteriores variables en el tiempo
dimension=length(a); % número de cargas exteriores (longitud de a).
force=ones(1,10); % vector de la misma longitud que 'a'
donde sus elementos valen 1 si hay fuerza puntual exterior en la
posicion 'a' ; 0 si no
%force=zeros(1,10);
moment_torsion=ones(1,10); % % vector de la misma longitud que
'a' donde sus elementos valen 1 si hay momento torsor exterior en la
posicion 'a' ; 0 si no
%moment_torsion=zeros(1,10);
temps0=2.4; % tiempo que duran las fuerzas exteriores. Todas
duran lo mismo en el tiempo (con 3.6 segundos ya no me converge)
n=4; % numero de puntos de Gauss
m=1.2e3; % numero de intervalos de integracion
h=temps0/m; %h=temps0/m; %H/m; % tamaño del intervalo de
integracion
met='sto'; % Metodo numerico de integracion ver el archivo metodo.m
% comienzo del programa
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
R=zeros(2*n,2*n);
M=zeros(2*n,2*n);
C=zeros(2*n,2*n);
[y,w]=gauss(0,L,n);
y=y/L; % adimensionalizamos los valores de los puntos de gauss, pues
las funciones de influencia estan
% adimensionalizadas en longitud.
3. % y: punto de Gauss
% w: coeficientes de Gauss
% Las tres matrices R M y C son matrices 2*n,2*n o vectores de
dimensiones 2*n, pues por cada punto de gauss hay que
% calcular dos despalazamientos (desplazamiento vertical lineal y giro
por torsion en el plano perpendicular a la seccion de la viga o
% giro por flexion en el plano de carga de la viga).
% Implementacion de la matriz de integracion[R]
for i=1:2:2*n;
R(i,i)=w((i+1)/2);
R(i+1,i+1)=w((i+1)/2);
end
% Implementacion de la matriz de masas [M]
% Para ello necesitamos calcular los valores de densidad,area y modulo
de
% torsion en los puntos de gauss: usaremos polinomios interpoladores.
% inicialmente consideramos que la densidad es constante en toda la
pala.
A=pchip(planosZ,area,y*L); % valores de area en los puntos de gauss.
J=pchip(planosZ,modtor,y*L); % valores del modulo torsion en puntos
gauss
Is=ro.*J;
for i=1:2:2*n;
M(i,i)=ro.*A((i+1)/2);
M(i+1,i+1)=Is((i+1)/2);
end
% Implementacion de la matriz de funciones de influencia [C]
for i=1:2:2*n;
for j=1:2:2*n;
C(i,j)=w1(y((i+1)/2),y((j+1)/2));
C(i,j+1)=w3(y((i+1)/2),y((j+1)/2));
C(i+1,j)=fi1(y((i+1)/2),y((j+1)/2));
C(i+1,j+1)=fi3(y((i+1)/2),y((j+1)/2));
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% calculo del desplazamiento estatico (deltaest)
deltaest=zeros(2*n,m); % la matriz de desplazamientos es una matriz
donde en cada una de las columnas se han almacenado
% los 2 desplazamientos de cada punto de gauss en un instante concreto
de tiempo.
for i=1:2:2*n
for s=1:dimension
for j=0:m-1
if j*h<temps0
[effort,m_torsion]=actionbuclejf(j*h,a(s),type,s);
4. if (force(s)==1)&&(moment_torsion(s)==0) % si
hay solo fuerza puntual
deltaest(i,j+1)=deltaest(i,j+1) +
w1(y((i+1)/2),a(s))*effort; % asi vamos añadiendo al valor anterior
el nuevo desplazamiento generado por nueva carga.
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi1(y((i+1)/2),a(s))*effort;
elseif (force(s)==0)&&(moment_torsion(s)==1) % si
hay solo momento de torsion
deltaest(i,j+1)=deltaest(i,j+1) +
w3(y((i+1)/2),a(s))*m_torsion;
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi3(y((i+1)/2),a(s))*m_torsion;
elseif (force(s)==1)&&(moment_torsion(s)==1) % hay
fuerza puntual y momento de torsion
deltaest(i,j+1)=deltaest(i,j+1) +
w1(y((i+1)/2),a(s))*effort + w3(y((i+1)/2),a(s))*m_torsion;
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi1(y((i+1)/2),a(s))*effort + fi3(y((i+1)/2),a(s))*m_torsion;
else % no hay cargas (force=0 y moment_torsion=0)
deltaest(i,j+1)=deltaest(i,j+1);
deltaest(i+1,j+1)=deltaest(i+1,j+1);
break % pongo esto para no estar entrando
continuamente en el bucle sin analizar nada.
end
else
deltaest(i,j+1)=0;
deltaest(i+1,j+1)=0; % ¿ Haria falta poner esto, si
nunca entra aqui j*h siempre es menor que temps0
end
end
end
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%% PRINCIPO DE STOERM %%%%%%%%%%%%%%%%%%%%%
% resolucion de la ecuacion diferencial
% algoritmo de Stoerm
metodo % corremos el programa metodo, el cual, al estar definida la
variable met como 'sto' nos ejecuta el algoritmo de stoerm
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% FINAL DE STOERM %%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Del algoritmo de Stoerm acabamos obteniendo el valor de delta.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5. % Calculo del desplazamiento en todos los puntos de la viga:
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
nb=40; % numero de puntos deseados
deltapp=zeros(2*n,m); % esto se podria quitar
point=zeros(nb,1); % esto se podria quitar
for i=1:nb+1;
point(i)=1/nb*(i-1);
end
% Point es un vector donde se representa la posicion de nb puntos de
la viga con equiespaciado entre puntos de 1/nb
deltapp=-invCRM*(delta-deltaest); % matriz que representa la segunda
derivada de delta.
C=zeros(2*nb,2*n);
for i=1:2:2*nb;
for j=1:2:2*n;
C(i,j)=w1(point((i+1)/2),y((j+1)/2));
C(i,j+1)=w3(point((i+1)/2),y((j+1)/2));
C(i+1,j)=fi1(point((i+1)/2),y((j+1)/2));
C(i+1,j+1)=fi3(point((i+1)/2),y((j+1)/2));
end
end
% Ahora llenamos la matriz de funciones de influencia colocando en
cada funcion de influencia los puntos
% de gauss como valores de chi, y valores equiespaciados de la
posicion de la viga como valores de x
% (ya no introducimos como haciamos antes en los valores de x de las
funciones de influencia los puntos de gauss)
deltaest=zeros(2*nb,m);
for i=1:2:2*nb
for s=1:dimension
for j=0:m-1
if j*h<temps0
[effort,m_torsion]=actionbuclejf(j*h,a(s),type,s);
if (force(s)==1)&&(moment_torsion(s)==0) % si
hay solo fuerza puntual
deltaest(i,j+1)=deltaest(i,j+1) +
w1(point((i+1)/2),a(s))*effort;
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi1(point((i+1)/2),a(s))*effort;
elseif (force(s)==0)&&(moment_torsion(s)==1) % si
hay solo momento de torsion
deltaest(i,j+1)=deltaest(i,j+1) +
w3(point((i+1)/2),a(s))*m_torsion;
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi3(point((i+1)/2),a(s))*m_torsion;
6. elseif (force(s)==1)&&(moment_torsion(s)==1) % hay
fuerza puntual y momento de torsion
deltaest(i,j+1)=deltaest(i,j+1) +
w1(point((i+1)/2),a(s))*effort + w3(point((i+1)/2),a(s))*m_torsion;
deltaest(i+1,j+1)=deltaest(i+1,j+1) +
fi1(point((i+1)/2),a(s))*effort + fi3(point((i+1)/2),a(s))*m_torsion;
else
% si no hay fuerza ni momento el desplazamiento es el
% que habia antes.
deltaest(i,j+1)=deltaest(i,j+1);
deltaest(i+1,j+1)=deltaest(i+1,j+1);
break % ponemos esto para no estar entrando
continuamente en el bucle sin analizar nada.
end
else
deltaest(i,j+1)=0;
deltaest(i+1,j+1)=0;
end
end
end
end
delta=zeros(2*nb,m); % esto se podria quitar
delta=deltaest-C*R*M*deltapp;
%despl=zeros(m/100,nb);
%teta=zeros(m/100,nb);
%fi=zeros(m/100,nb);
for i=1:2:2*nb
for j=1:1:m
despl(j,(i+1)/2)=delta(i,j);
fi(j,(i+1)/2)=delta(i+1,j);
tiempo(j)=t(j);
end
end
% esto nos permite separar de la matriz de desplazamientos, el
desplazamiento vertical, giro por flexion y
% giro por torsion en funcion del tiempo de cada uno de los nb puntos
seleccionados de la viga en tres
% vectores distintos que los almacenan: despl, teta y fi
respectivamente.
% El vector de tiempos es el ya obtenido en el algoritmo de stoerm:
es un vector equiespaciado.
tiempo2=tiempo'; % trasponemos el vector para que quede igual que
despl, teta y fi, en cuyas columnas se almacenan
% los desplazamientos correspondientes a cada uno de los puntos de la
viga en el transcurso del tiempo.
%for i=1:3:3*nb
% for j=1:m
% despl((i+2)/3,j)=-delta(i,j);
7. % teta((i+2)/3,j)=-delta(i+1,j);
% fi((i+2)/3,j)=-delta(i+2,j);
% end
%end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% affichage du resultat
% Graficos de desplazamiento vertical:
figure(1)
plot(tiempo2,despl(:,40),'.b-') % nos permite ver la evolucion de
un punto de la viga en el tiempo
title('evolucion del extremo de la viga en el tiempo')
xlabel('tiempo(s)')
ylabel('desplazamiento vertical (m)')
grid
figure(2)
plot(1:40,despl(1200,:),'.r-') % nos permite ver la deformada de la
viga en un determinado tiempo
title('deformada de la viga en un determinado tiempo')
xlabel('posicion de los puntos de la viga (pto 40 = extremo)')
ylabel('desplazamiento vertical (m)')
grid
%Graficos de angulo de torsion:
figure(3)
plot(tiempo2,fi(:,40),'.b-') % nos permite ver la evolucion del
angulo torsion de un punto de la viga en el tiempo
title('evolucion del angulo de torsion del extremo de la viga en el
tiempo')
xlabel('tiempo(s)')
ylabel('angulo de torsion')
grid
figure(4)
plot(1:40,fi(1200,:),'.r-') % nos permite ver el angulo de torsion de
la viga en un determinado tiempo
title('angulo de torsion de la viga en un determinado tiempo')
xlabel('posicion de los puntos de la viga (pto 40 = extremo)')
ylabel('angulo de torsion')
grid
% Hemos puesto como amplitud de la fuerza en el programa action un
valor de Pmax = 20:
% Para este valor los valores de axis del programita siguiente nos
permiten verlo bien.
% Probar esta secuencia para ver bien los resultados:
% Para visualizar la deformada de la viga en el transcurso del tiempo:
%for i=1:1200
%if i<600
%plot(1:40,despl(i,:),'r-')
%hold on
%pause(0.1)
%axis([38.5 40 -6e-5 1e-8])
%else
%plot(1:40,despl(i,:),'b-')
8. %hold on
%pause(0.1)
%axis([38.5 40 -6e-5 1e-8])
%end
%end
% Y para visualizar la evolucion de cada punto de la viga en funcion
del tiempo:
%for i=1:40
%plot(tiempo2,despl(:,i))
%hold on
%pause(1)
%end
ACTIONBUCLEJF.M
function [effort,moment_torsion] = actionbuclejf(ti,a,type,s)
global temps0;
factorcarga=1.35;
if type==1
load cargasoperacion
tiempo=(giro1)*60/(25*2*pi);
%effort0=pchip(tiempo,Fax1(:,s),ti);
effort0=pchip(tiempo,Ftantot(:,s),ti);
effort=effort0*factorcarga;
moment_torsion0=pchip(tiempo,Mtorsor(:,s),ti);
moment_torsion=moment_torsion0*factorcarga;
elseif type==2
load cargaextrema
effort0=pchip(t,Fax(:,s),ti);
effort=effort0*factorcarga;
moment_torsion0=pchip(t,Mtorsor(:,s),ti);
moment_torsion=moment_torsion0*factorcarga;
end
%moment_torsion=0;
METODO.M
% Seleccion del metodo numerico para integral la ecuacion diferencial
if met=='sto'
stoerm
end
if met=='abm'
adbami
end
if met=='ham'
hamming
end
if met=='msi'
9. milsim
end
if met=='rk2'
runkut2
end
if met=='rk4'
runkut4
end
STOERM.M
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%% PRINCIPIO DE STOERM %%%%%%%%%%%%%%%%%%%%%
% resolucion de la ecuacion diferencial.
% algoritmo de Stoerm
% Si nos fijamos en los apuntes se ve como la y de la ecuacion
corresponde a nuestra delta
% que es funcion del tiempo (el equivalente a la variable x de la
formula). La funcion de la
% derecha de la ecuacion, que es f(x,y) esta representada en nuestro
problema por (deltaest-delta)/CRM
% que es una funcion de x y de y, o lo que es lo mismo de t y de
delta, pues la variable delta
% esta representada por el termino delta y la varieble del tiempo por
deltaest, pues es funcion solo
% de t ya que en x esta evaluada sobre los puntos de gauss.
% Asi x0=t0; y(x0)=y(t0)=y0=delta0; z0 es igual: dy/dx=ddelta/dt=z0.
t0=0;
z0=0;
delta0=0;
delta=zeros(2*n,m);
invCRM=inv(C*R*M);
inc=zeros(2*n,m);
inc(:,1)=h*(z0+1/2*h*invCRM*(deltaest(:,1)-delta(:,1)));
delta(:,2)=delta(:,1)+inc(:,1);
for k=2:m-1
inc(:,k)=inc(:,k-1)+h*h*invCRM*(deltaest(:,k)-delta(:,k));
delta(:,k+1)=delta(:,k)+inc(:,k);
end
t=zeros(1,m);
for k=1:m
t(k)=t0+(k-1)*h;
end
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%% FINAL DE STOERM %%%%%%%%%%%%%%%%%%%%%%%%%%%%
11. % rapido.
% Asi:
L=26; % longitud de la viga(m)
planosZ=linspace(0,L,L+1); % vector longitud en el que vamos a
calcular valores
tipo=2; % definimos el tipo de pala que queremos de los modelos a
estudio.
% Recordar: tipo=1 pala con distribucion de webs desde
transicion
% tipo=2 pala con webs solo zona aerodinamica
% tipo=3 pala sin ninguna distribucion de webs.
% Centros de masas de las secciones (consideraremos ademas que
coinciden
% con los centros de torsion o shear center, por lo que la inercia y
la
% torsion se producira sobre estos puntos):
[xg,yg] = cmasas(planosZ,tipo); % estos valores estan calculados para
cada seccion
% respecto a unos ejes x,y que pasan por su leading edge.
% Momentos de inercia de las secciones:
[cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(planosZ);
[Ixggir,Iyggir,Ixyggir] = mominercia(planosZ,tipo,xg,yg,torsion); %
inercia sobre ejes que pasan por xg,yg
% Hay que pasar estos valores a las direcciones globales de batimiento
y
% arrastre:
IX=Iyggir; % Direccion general de batimiento de la pala (X).
IY=Ixggir; % Direccion general de arrastre de la pala (Y).
IXY=-Ixyggir; % Efecto en el cambio del producto de inercia por el
sentido de ejes considerado
% Sentido de la direccion de batimiento: sentido de la
velocidad del viento.
% Sentido de la direccion de arrastre: Hacia el extrados
del perfil.
% Areas de las secciones: variable area
[xext,yextraext,yintraext,xint,yextraint,yintraint,area]=secciontotpch
ip(planosZ,tipo);
% Modulos de torsion: 'modtor'
[modtor]=modulotorsion(planosZ);
% Una vez obtenidas estas variables generamos un mat-file para el
programa
% homer que las contenga. Este archivo se llamara geometria:
save geometria
12. W1.M
function [reponse] = w1(x,xi)
global E;
global IX;
global IY;
global IXY;
global K;
global area;
global G;
global modtor;
global Kt;
global CL;
global L;
global planosZ;
x=x*L;
xi=xi*L;
P=1;
puntis=30;
if CL==1
if x<xi
if x==0
reponse=0; % la viga esta empotrada, su extremo no se
mueve.
else
% metodo Hermite:
XH=linspace(0,x,puntis); % XH es la variable de
integracion.
MfH=P*(xi-XH);
%Para no torsion:
%I=pchip(planosZ,IY,XH); % BATIMIENTO (FLAP)
%I=pchip(planosZ,IX,XH); % ARRASTRE (LAG)
%FH=(MfH./(E.*I)).*(x-XH);
% Para torsion:
Iy=pchip(planosZ,IY,XH);
Ix=pchip(planosZ,IX,XH);
Ixy=pchip(planosZ,IXY,XH);
FH=((MfH.*Ix)./(E.*(Ix.*Iy-Ixy.^2))).*(x-XH); % BATIMIENTO
(FLAP)
%FH=((MfH.*Iy)./(E.*(Ix.*Iy-Ixy.^2))).*(x-XH); % ARRASTRE
(LAG)
trapecio=sum(diff(XH).*(FH(1:end-1)+FH(2:end))/2);
% añadimos la parte de hermite a la parte ttrapezoidal.
h = diff(XH);
delta = diff(FH)./h;
d = pchipslopes(h,delta);
D = sum((h.^2).*(d(2:end)-d(1:end-1))/12);
reponse=trapecio-D;
%reponse =-(x^2*L^3/(2*E*I)*(x/3-xi)); sin cortante
%1 reponse = -(-(L/(K*A*G)*x) + x^2*L^3/(2*E*I)*(x/3-
xi)); con
%cortante
end
else
if x==0
reponse=0; % la viga esta empotrada, su extremo no se
mueve.
else
13. % metodo Hermite:
XH=linspace(0,xi,puntis); % XH es la variable de
integracion.
MfH=P*(xi-XH);
%Para no torsion:
%I=pchip(planosZ,IY,XH); % BATIMIENTO (FLAP)
%I=pchip(planosZ,IX,XH); % ARRASTRE (LAG)
%FH=(MfH./(E.*I)).*(x-XH);
% Para torsion:
Iy=pchip(planosZ,IY,XH);
Ix=pchip(planosZ,IX,XH);
Ixy=pchip(planosZ,IXY,XH);
FH=((MfH.*Ix)./(E.*(Ix.*Iy-Ixy.^2))).*(x-XH); % BATIMIENTO
(FLAP)
%FH=((MfH.*Iy)./(E.*(Ix.*Iy-Ixy.^2))).*(x-XH); % ARRASTRE
(LAG)
trapecio=sum(diff(XH).*(FH(1:end-1)+FH(2:end))/2);
% añadimos la parte de hermite a la parte ttrapezoidal.
h = diff(XH);
delta = diff(FH)./h;
d = pchipslopes(h,delta);
D = sum((h.^2).*(d(2:end)-d(1:end-1))/12);
reponse=trapecio-D;
%reponse = -(xi^2*L^2/(2*E*I)*(xi/3-x)*L);
%1 reponse = -(-L/(K*A*G)*xi +
xi^2*L^2/(2*E*I)*(xi/3-x)*L);
end
end
end
W3.M
function [reponse] = w3(x,xi)
global E;
global IX;
global IY;
global IXY;
global K;
global area;
global G;
global modtor;
global Kt;
global CL;
global L;
global planosZ;
if CL==1
if x<xi
reponse =L^2/(2*Kt)*x^2;
else
reponse =L^2/(2*Kt)*xi^2; % xi*L/Kt*(xi/2-x)*L;
end
end
14. FI1.M
function [reponse] = fi1(x,xi)
global E;
global IX;
global IY;
global IXY;
global K;
global area;
global G;
global modtor;
global Kt;
global CL;
global L;
global planosZ;
if CL==1
if x<xi
reponse =x*L/Kt*(xi-x/2)*L;
else
reponse =xi^2*L^2/(2*Kt);
end
end
FI3.M
function [reponse] = fi3(x,xi)
global E;
global IX;
global IY;
global IXY;
global K;
global area;
global G;
global modtor;
global Kt;
global CL;
global L;
global planosZ;
x=x*L;
xi=xi*L;
puntis=30;
if CL==1
if x<xi
if x==0
reponse=0; % la viga esta empotrada, su extremo no se
mueve.
else
% metodo Hermite:
XH=linspace(0,x,puntis); % XH es la variable de
integracion.
MtH=1;
J=pchip(planosZ,modtor,XH);
FH=(MtH./(G.*J));
trapecio=sum(diff(XH).*(FH(1:end-1)+FH(2:end))/2);
15. % añadimos la parte de hermite a la parte ttrapezoidal.
h = diff(XH);
delta = diff(FH)./h;
d = pchipslopes(h,delta);
D = sum((h.^2).*(d(2:end)-d(1:end-1))/12);
reponse=trapecio-D;
%reponse =-(x^2*L^3/(2*E*I)*(x/3-xi)); sin cortante
%1 reponse = -(-(L/(K*A*G)*x) + x^2*L^3/(2*E*I)*(x/3-
xi)); con
%cortante
end
else
if x==0
reponse=0; % la viga esta empotrada, su extremo no se
mueve.
else
% metodo Hermite:
XH=linspace(0,xi,puntis); % XH es la variable de
integracion.
MtH=1;
J=pchip(planosZ,modtor,XH);
FH=(MtH./(G.*J));
trapecio=sum(diff(XH).*(FH(1:end-1)+FH(2:end))/2);
% añadimos la parte de hermite a la parte ttrapezoidal.
h = diff(XH);
delta = diff(FH)./h;
d = pchipslopes(h,delta);
D = sum((h.^2).*(d(2:end)-d(1:end-1))/12);
reponse=trapecio-D;
%reponse = -(xi^2*L^2/(2*E*I)*(xi/3-x)*L);
%1 reponse = -(-L/(K*A*G)*xi +
xi^2*L^2/(2*E*I)*(xi/3-x)*L);
end
end
end
16. CÁLCULO DE FUERZAS
FUERZASCICLO.M
% Este programa permite calcular las fuerzas aerodinámicas a las que
% se encuentra sometida una pala del aerogenerador en su movimiento de
% giro , dando lugar a fuerzas ciclicas de frecuencia 1P.
giro1=[0:20:360]*pi/180;
num=length(giro1);
% Programa calculo aerogenerador STRIP THEORY (CIEMAT)
% Vamos a intentar calcular la distribucion de fuerzas sobre un rotor
% que presenta las siguientes caracteristicas geometricas en sus
palas.
% Llamada a los programas que contienen la geometria del rotor.
rbuje=1; % (m)
L=26; % (m)
R=L+rbuje; % Radio de 27 m.
%x=0.1:0.01:1;
x=(7:2:25)*(1/L); % vector de puntos con longitudes adimensionales con
la longitud de la pala.
puntos=length(x); % numero de puntos en q dividimos la pala
elementos=puntos-1; % numero de elementos de pala en que queda
dividida la misma.
l=x*L; % distribucion de longitudes de pala (distancias medidas desde
la base de la pala)
r=l+rbuje; % distribución de radios
N=3; % número de palas de la aeroturbina (separadas por tanto 120
grados entre si).
ro=1.225; % densidad del aire a T=25ºC
nu=1.5e-5; % viscosidad cinematica del aire a T=25ºC, nu = viscosidad
dinamica/ro (m^2/s)
omrpm=25; % velocidad de giro de la maquina en revoluciones por minuto
omega=omrpm/(60/(2*pi)); % velocidad de giro de la maquina en rad/s
%Vhub=omega*R/lambda; % velocidad del viento a la altura del buje
(m/s)
Vhub=25; % velocidad del viento a la altura del buje (m/s)
lambda=omega*R/Vhub; % cociente entre la velocidad de punta de pala y
la velocidad viento en el buje
hbuje=50; % altura del buje. Se puede utilizar la expresion
hbuje=0.75D +10 m siendo D el diámetro del rotor.
[cuerda,torsion,espesorrel]=palalmlineal(l); % variacion lineal de la
cuerda.
teta=torsion*pi/180; % pasamos torsion q esta en grados a radianes.
%%%%%%%%%%% CALCULO DE LOS VALORES ADIMENSIONALES DEL PROBLEMA
%%%%%%%%%%
17. %lan=(omega/Vhub)*r; % parametro de avance local de la pala
sigma=(N/pi)*cuerda./r; % solidez local de la pala
% Consideraremos en este apartado que el viento no es uniforme sino
que presenta cortadura vertical.
% Cada pala esta afectada por un viento distinto, asi que numeraremos
las tres palas con los coeficientes 1,2 y 3.
for s=1:num
%giro1=0; % angulo de giro en el que se encuentra la pala 1 en el
plano del rotor
giro2=giro1(s)+(2/3)*pi; % angulo en el que se encuentra la pala 2
(120 grados mas que la 1)
giro3=giro1(s)-(2/3)*pi; % angulo en el que se encuentra la pala (120
grados menos que la 1)
% Calculo de las palas.
h1=hbuje+r.*sin(giro1(s)); % vector de alturas de los elementos de
pala de la pala 1.
h2=hbuje+r.*sin(giro2); % vector de alturas de los elementos de pala
de la pala 2.
h3=hbuje+r.*sin(giro3); % vector de alturas de los elementos de pala
de la pala 3.
v1=viento(h1,Vhub,hbuje); % vector de velocidades de viento incidente
en cada tramo de la pala 1.
% se ve como se ha llamado a la funcion viento, considerando como
valores
% de referencia la velocidad q queremos en el buje y la altura del
mismo.
v2=viento(h2,Vhub,hbuje); % vector de velocidades de viento incidente
en cada tramo de la pala 2.
v3=viento(h3,Vhub,hbuje); % vector de velocidades de viento incidente
en cada tramo de la pala 3.
for k=1:puntos; % k = seccion de la pala. La ultima es la anterior a
la punta.
j=1;
a(1)=0; % valor inicial del parametro de velocidad inducida axial
aprima(1)=0; % valor inicial del parametro de velocidad inducida
tangencial
[alfa,cl,cd,cm] = polarespala(l(k)); % Obtenemos los datos de las
curvas polares de la seccion.
while j<50
FI1(j)=atan((v1(k)/(omega*r(k)))*((1-a(j))/(1+aprima(j))));
FI2(j)=atan((v2(k)/(omega*r(k)))*((1-a(j))/(1+aprima(j))));
FI3(j)=atan((v3(k)/(omega*r(k)))*((1-a(j))/(1+aprima(j))));
alfa1(j)=FI1(j)-teta(k);
alfa2(j)=FI2(j)-teta(k);
alfa3(j)=FI3(j)-teta(k);
alfagrad1(j)=alfa1(j)*180/pi;
alfagrad2(j)=alfa2(j)*180/pi;
alfagrad3(j)=alfa3(j)*180/pi;
coefsust1(j)=pchip(alfa,cl,alfagrad1(j));
coefsust2(j)=pchip(alfa,cl,alfagrad2(j));
coefsust3(j)=pchip(alfa,cl,alfagrad3(j));
%coefresist1(j)= pchip(cl1,cd,coefsust1(j));
18. %coefresist2(j)= pchip(cl1,cd,coefsust2(j));
%coefresist3(j)= pchip(cl1,cd,coefsust3(j));
coefresist1(j)= pchip(alfa,cd,alfagrad1(j));
coefresist2(j)= pchip(alfa,cd,alfagrad2(j));
coefresist3(j)= pchip(alfa,cd,alfagrad3(j));
% Vamos a incluir los efectos de perdida en punta de pala a
traves
% del factor de Prandtl Fp.
Fp1(j)=(2/pi)*acos(exp(-(N*(R-r(k)))/(2*r(k)*sin(FI1(j)))));
Fp2(j)=(2/pi)*acos(exp(-(N*(R-r(k)))/(2*r(k)*sin(FI2(j)))));
Fp3(j)=(2/pi)*acos(exp(-(N*(R-r(k)))/(2*r(k)*sin(FI3(j)))));
% Vamos a ver el resultado segun dos libros diferentes, el de
% Arnalte Gomez y el del Ciemat (al primero le daremos el
subindice
% 1 para los datos calculados y al segundo el valor 2)
Y(j)=(1/Vhub^2)*(sigma(k)/(8*N))*((v1(k)^2/(sin(FI1(j)))^2)*(coefsust1
(j)*cos(FI1(j))+coefresist1(j)*sin(FI1(j)))+...
(v2(k)^2/(sin(FI2(j)))^2)*(coefsust2(j)*cos(FI2(j))+coefresist2(j)*sin
(FI2(j)))+...
(v3(k)^2/(sin(FI3(j)))^2)*(coefsust3(j)*cos(FI3(j))+coefresist3(j)*sin
(FI3(j))));
Z(j)=(1/Vhub)*(sigma(k)/(8*N))*((v1(k)/(sin(FI1(j))*cos(FI1(j))))*(coe
fsust1(j)*sin(FI1(j))-coefresist1(j)*cos(FI1(j)))+...
(v2(k)/(sin(FI2(j))*cos(FI2(j))))*(coefsust2(j)*sin(FI2(j))-
coefresist2(j)*cos(FI2(j)))+...
(v3(k)/(sin(FI3(j))*cos(FI3(j))))*(coefsust3(j)*sin(FI3(j))-
coefresist3(j)*cos(FI3(j))));
% Segun libro Arnalte Gomez.
% a(j+1)=Y(j)*(1/Fp(j))/(Y(j)*(1/Fp(j))+1);
% aprima(j+1)=Z(j)*(1/Fp(j))/(1-Z(j)*(1/Fp(j)));
% En este caso como divide directamente por los coeficientes Y
y Z
% por el factor Fp se dispara mas la solucion de A en la punta
de
% la pala q en el caso del ciemat, donde la subida no es tan
% grande.
% Segun libro del ciemat.
%%%%%%%%%%%%%%%%%%%%%%%%% MATLAB 5.3
%%%%%%%%%%%%%%%%%%%%%%%%%%%
%g=inline('(u.^2)*(constante1+constante2^2)-
u*(2*constante1+constante2)+constante1','u','constante1','constante2')
;
%constante1=Y(j);
%constante2=Fp1(j);
19. %a(j+1)=fzero(g,[0 1],[],0,constante1,constante2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%% MATLAB 7
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
constante1=Y(j);
constante2=Fp1(j);
g=@(u)(u.^2)*(constante1+constante2^2)-
u*(2*constante1+constante2)+constante1;
a(j+1)=fzero(g,[0 1]);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Zprima(j)=Z(j)*(1-a(j+1))/(Fp1(j)*(1-a(j+1)*Fp1(j)));
aprima(j+1)=Zprima(j)/(1-Zprima(j));
j=j+1;
end
% Guardamos en un nuevo vector los valores resultantes de la
% convergencia (ver que j tiene q reducirse en 1 pues sale con un
valor
% adicional con el que ya no entra en el bucle.
A(k)=a(j-1);
Aprima(k)=aprima(j-1);
fi1(k)=FI1(j-1);
fi2(k)=FI2(j-1);
fi3(k)=FI3(j-1);
figrad1(k)=FI1(j-1)*180/pi;
figrad2(k)=FI2(j-1)*180/pi;
figrad3(k)=FI3(j-1)*180/pi;
alphagrad1(k)=alfagrad1(j-1);
alphagrad2(k)=alfagrad2(j-1);
alphagrad3(k)=alfagrad3(j-1);
Coefsust1(k)=coefsust1(j-1);
Coefsust2(k)=coefsust2(j-1);
Coefsust3(k)=coefsust3(j-1);
Coefresist1(k)=coefresist1(j-1);
Coefresist2(k)=coefresist2(j-1);
Coefresist3(k)=coefresist3(j-1);
Coefmoment1(k)=pchip(alfa,cm,alphagrad1(k));
Coefmoment2(k)=pchip(alfa,cm,alphagrad2(k));
Coefmoment3(k)=pchip(alfa,cm,alphagrad3(k));
y(k)=Y(j-1);
z(k)=Z(j-1);
fp1(k)=Fp1(j-1);
fp2(k)=Fp2(j-1);
fp3(k)=Fp3(j-1);
end
% Nota: hay que darse cuenta que no se han calculado en el bucle los
% valores de los datos correspondientes a la punta de la pala. Esto
nos permite despues a la hora de calcular la distribucion de fuerzas
sobre los elementos de pala de la misma no tener que eliminar el dato
de los valores de la punta de pala de los distintos vectores, pues el
numero de elementos de pala es igual al numero de puntos en que hemos
dividido la pala menos 1.
%figure(1)
%plot(x(1:k),A,x(1:k),A,'mo');
20. %title('Velocidad inducida axial a')
%xlabel('r/R')
%ylabel('a')
%grid
%figure(2)
%plot(x(1:k),Aprima,x(1:k),Aprima,'mo');
%title('Velocidad inducida tangencial aprima')
%xlabel('r/R')
%ylabel('aprima')
%grid
%%%%%%%% CALCULO DE LAS VARIABLES DIMENSIONALES DE TURBINA
%%%%%%%%%%%%%
elementos=puntos;
W1=((omega*r(1:elementos).*(1+Aprima)).^2+(v1(1:elementos).*(1-
A)).^2).^0.5; % velocidad relativa a los perfiles pala 1
%W2=((omega*r(1:elementos).*(1+Aprima)).^2+(v2(1:elementos).*(1-
A)).^2).^0.5; % velocidad relativa a los perfiles pala 2
%W3=((omega*r(1:elementos).*(1+Aprima)).^2+(v3(1:elementos).*(1-
A)).^2).^0.5; % velocidad relativa a los perfiles pala 3
deltaR=2; % elemento diferencial de radio (concentramos las cargas en
distancias de 2m)
Cx1=Coefsust1.*cos(fi1)+ Coefresist1.*sin(fi1); % Coeficiente Cx1
%Cx2=Coefsust2.*cos(fi2)+ Coefresist2.*sin(fi2); % Coeficiente Cx2
%Cx3=Coefsust3.*cos(fi3)+ Coefresist3.*sin(fi3); % Coeficiente Cx3
Cy1=Coefsust1.*sin(fi1)- Coefresist1.*cos(fi1); % Coeficiente Cy1
%Cy2=Coefsust2.*sin(fi2)- Coefresist2.*cos(fi2); % Coeficiente Cy2
%Cy3=Coefsust3.*sin(fi3)- Coefresist3.*cos(fi3); % Coeficiente Cy3
% distribución de fuerza axial en las palas (Newton)
Fax1(s,:)=0.5*ro*cuerda(1:elementos).*(W1.^2).*Cx1*deltaR;
%Fax2=0.5*ro*cuerda(1:elementos).*(W2.^2).*Cx2*deltaR;
%Fax3=0.5*ro*cuerda(1:elementos).*(W3.^2).*Cx3*deltaR;
% Numero de Reynolds del perfil:
Re1=(W1.*cuerda(1:elementos))/nu;
%Re2=(W2.*cuerda(1:elementos))/nu;
%Re3=(W3.*cuerda(1:elementos))/nu;
% distribucion de fuerza tangencial en las palas (Newton)
Ftan1(s,:)=0.5*ro*cuerda(1:elementos).*(W1.^2).*Cy1*deltaR;
%Ftan2=0.5*ro*cuerda(1:elementos).*(W2.^2).*Cy2*deltaR;
%Ftan3=0.5*ro*cuerda(1:elementos).*(W3.^2).*Cy3*deltaR;
% distribucion de momentos torsores o de cabeceo en los perfiles
(N*m).
Mca1(s,:)=0.5*ro*((cuerda(1:elementos)).^2).*(W1.^2).*Coefmoment1*delt
aR;
%Mca2=0.5*ro*((cuerda(1:elementos)).^2).*(W2.^2).*Coefmoment2*deltaR;
%Mca3=0.5*ro*((cuerda(1:elementos)).^2).*(W3.^2).*Coefmoment3*deltaR;
% Fuerzas de sustentacion en los perfiles (Newton).
L1(s,:)=0.5*ro*cuerda(1:elementos).*(W1.^2).*Coefsust1*deltaR;
21. %L2=0.5*ro*cuerda(1:elementos).*(W2.^2).*Coefsust2*deltaR;
%L3=0.5*ro*cuerda(1:elementos).*(W3.^2).*Coefsust3*deltaR;
% Fuerzas de resistencia en los perfiles (Newton).
D1(s,:)=0.5*ro*cuerda(1:elementos).*(W1.^2).*Coefresist1*deltaR;
%D2=0.5*ro*cuerda(1:elementos).*(W2.^2).*Coefresist2*deltaR;
%D3=0.5*ro*cuerda(1:elementos).*(W3.^2).*Coefresist3*deltaR;
% Distancias entre el centro aerodinamico y el centro de presiones en
cada perfil aerodinamico (m).
lcp1=-Mca1./L1;
%lcp2=-Mca2./L2;
%lcp3=-Mca3./L3;
end
% NOTA: Hemos considerado la velocidad en el buje como una velocidad
media
% sobre las areas que atraviesa el viento. Esto seguramente puede ser
% mejorado calculando una velocidad media sobre el área de paso de
forma
% mas precisa que esta mera aproximacion. En principio nos vale de
momento
% asi.
% Una vez hecho esto, tenemos el modelo de cargas concentradas para
los
% distintos angulos de giro de la turbina. Las columnas de las
matrices
% corresponden a las variaciones de las fuerzas en el tiempo para las
% secciones correspondientes (columna 1 = seccion 1 y así).
% Si dibujamos la variación de la fuerza sobre una seccion, por
ejemplo la
% ultima, tenemos:
figure(1)
plot((giro1)*180/pi,Fax1(:,end),'-o')
% Para todas las secciones
figure(2)
plot((giro1)*180/pi,Fax1,'-o')
% Y como funcion del tiempo
figure(3)
plot((giro1)*60/(omrpm*2*pi),Fax1,'-o')
% A continuacion calcularemos la funcion de distribucion de masas.
k= 10/4; % relación de espesor entre el núcleo y las pieles del
sandwich.
dens=(2*1750+144*k)/(2+k); % densidad del sandwich (kg/m^3): fibra de
vidrio epoxi + balsa core.
tipo=2;
g=9.81 % aceleracion de la gravedad (m/s^2)
[xextH,yextraextH,yintraextH,xintH,yextraintH,yintraintH,areatot]=secc
iontotpchip(l,tipo);
22. % la funcion de distribucion de masas es
Funmasa=areatot.*dens;
% las fuerzas masicas que analizaremos con el modelo de cargas
concentradas
% seran:
Peso=Funmasa*deltaR*g;
% La funcion peso varía en el tiempo su contribucion a la Ftangencial
que
% mueve el aerogenerador. Esa variacion es de tipo cosenoidal:
for f=1:num
Ftanpeso(f,:)=-Peso(1:end)*cos(giro1(f)); % hay una seccion menos
como en el resto de fuerzas
end
Ftantot=Ftan1+Ftanpeso;
figure(4)
plot((giro1)*60/(omrpm*2*pi),Ftantot,'-o')
figure(5)
plot((giro1)*60/(omrpm*2*pi),Ftantot(:,end),'-o')
% Calculamos finalmente el momento torsor definitivo sobre las
secciones:
[xg,yg] = cmasas(l,tipo);
[cuerda,torsion] = palalmlineal(l);
for j=1:elementos
Mtorsor(:,j)=(xg(j)-0.25*cuerda(j))*(-
Ftan1(:,j)*sin(torsion(j)*pi/180)-Fax1(:,j)*cos(torsion(j)*pi/180)) +
yg(j)*(-
Ftan1(:,j)*cos(torsion(j)*pi/180)+Fax1(:,j)*sin(torsion(j)*pi/180))+(-
Mca1(:,j));
end
figure(6)
plot((giro1)*60/(omrpm*2*pi),Mtorsor,'-o')
save cargasoperacion Fax1 Ftan1 Ftanpeso Ftantot Mca1 Mtorsor giro1
omrpm
23. VIENTO.M
% Funcion de variacion de la velocidad del aire con la altura.
function [v] = viento(h,v0,h0)
% La funcion de velocidad del viento depende de los siguientes
parámetros:
% h: altura (m) a la cual se quiere calcular la velocidad del viento v
% (m/s)
% v0: velocidad de referencia a la altura de referencia h0 (por
ejemplo
% velocidad medida por un anemómetro a una determinada altura).
% h0: altura de referencia (m) a la que se conoce la velocidad.
n=0.2; % coeficiente potencial que depende del tipo de terreno n =
[0.13-0.20] en superficie moderadamente rugosa.
v=v0*(h/h0).^n; % velocidad del viento a una altura h del suelo.
POLARESPALA.M
% Archivo que contiene las curvas polares de los perfiles de la pala
LM26
% según la geometría definida en palalmlineal.
% Procedamos a leer los datos de las secciones analizadas (uso de
XFOIL y
% AIRFOIL_PREP).
function [alfa,Cl,Cd,Cm] = polarespala(l)
% alfa es un vector, no una matriz como pueden ser el resto de salidas
ya
% que siempre consideraremos los mismos valores de alfa para todas las
% secciones y todas las curvas (se queda en un vector porque no hace
falta
% hacer una matriz redundante con todas las filas iguales)
L=26; % 26m de longitud de pala
longit=length(l);
for i=1:longit
if l(i)<0 | l(i)>L
error('introduzca un/unos valor/es de longitud entre L=0 y L=26
(m)')
end
end
% sección L=3m; CILINDRO (consideramos CL=0,CM=0,CD=1.17= constante)
CL3=0;
CM3=0;
CD3=1.17;
% seccion L=6m:
matrix6=XLSREAD('perfil6m.xls','tableExtrap','H15:K87');
alpha6=matrix6(:,1);
25. matrix21=XLSREAD('perfil21m.xls','tableExtrap','H15:K82');
alpha21=matrix21(:,1);
CL21=matrix21(:,2);
CD21=matrix21(:,3);
CM21=matrix21(:,4);
% seccion L=23m
matrix23=XLSREAD('perfil23m.xls','tableExtrap','H15:K82');
alpha23=matrix23(:,1);
CL23=matrix23(:,2);
CD23=matrix23(:,3);
CM23=matrix23(:,4);
% seccion L=25m
matrix25=XLSREAD('perfil25m.xls','tableExtrap','H15:K82');
alpha25=matrix25(:,1);
CL25=matrix25(:,2);
CD25=matrix25(:,3);
CM25=matrix25(:,4);
% seccion L=26m
matrix26=XLSREAD('perfil26m.xls','tableExtrap','H15:K87');
alpha26=matrix6(:,1);
CL26=matrix26(:,2);
CD26=matrix26(:,3);
CM26=matrix26(:,4);
% Definamos los valores del angulo de ataque que queremos obtener:
alfa=[-180:10:-20 -19:1:30 35:5:60 70:10:180];
% Con esos valores de alfa, definamos los valores de CD,CL,CM de las
% secciones criticas, para que todas tengan el mismo numero de puntos
y
% para los mismos alfas.
% seccion L=3m:
Cl3=zeros(1,length(alfa));
Cd3=1.17*ones(1,length(alfa));
Cm3=zeros(1,length(alfa));
% seccion L=6m:
Cl6=pchip(alpha6,CL6,alfa);
Cd6=pchip(alpha6,CD6,alfa);
Cm6=pchip(alpha6,CM6,alfa);
% seccion L=7m
Cl7=pchip(alpha7,CL7,alfa);
Cd7=pchip(alpha7,CD7,alfa);
Cm7=pchip(alpha7,CM7,alfa);
% seccion L=9m
Cl9=pchip(alpha9,CL9,alfa);
Cd9=pchip(alpha9,CD9,alfa);
Cm9=pchip(alpha9,CM9,alfa);
% seccion L=11m
Cl11=pchip(alpha11,CL11,alfa);
Cd11=pchip(alpha11,CD11,alfa);
Cm11=pchip(alpha11,CM11,alfa);
26. % seccion L=13m
Cl13=pchip(alpha13,CL13,alfa);
Cd13=pchip(alpha13,CD13,alfa);
Cm13=pchip(alpha13,CM13,alfa);
% seccion L=15m
Cl15=pchip(alpha15,CL15,alfa);
Cd15=pchip(alpha15,CD15,alfa);
Cm15=pchip(alpha15,CM15,alfa);
% seccion L=17m
Cl17=pchip(alpha17,CL17,alfa);
Cd17=pchip(alpha17,CD17,alfa);
Cm17=pchip(alpha17,CM17,alfa);
% seccion L=19m
Cl19=pchip(alpha19,CL19,alfa);
Cd19=pchip(alpha19,CD19,alfa);
Cm19=pchip(alpha19,CM19,alfa);
% seccion L=21m
Cl21=pchip(alpha21,CL21,alfa);
Cd21=pchip(alpha21,CD21,alfa);
Cm21=pchip(alpha21,CM21,alfa);
% seccion L=23m
Cl23=pchip(alpha23,CL23,alfa);
Cd23=pchip(alpha23,CD23,alfa);
Cm23=pchip(alpha23,CM23,alfa);
% seccion L=25m
Cl25=pchip(alpha25,CL25,alfa);
Cd25=pchip(alpha25,CD25,alfa);
Cm25=pchip(alpha25,CM25,alfa);
% seccion L=26m
Cl26=pchip(alpha26,CL26,alfa);
Cd26=pchip(alpha26,CD26,alfa);
Cm26=pchip(alpha26,CM26,alfa);
for j=1:longit
if l(j)<=3
Cl(j,:)=Cl3;
Cm(j,:)=Cm3;
Cd(j,:)=Cd3;
elseif l(j)<=6
% interpolamos entre la seccion L=3 y L=6
% definimos el peso: W
W=((l(j)-3)/(6-3));
Cd(j,:)=W*Cd6 + (1-W)*Cd3;
Cl(j,:)=W*Cl6 + (1-W)*Cl3;
Cm(j,:)=W*Cm6 + (1-W)*Cm3;
elseif l(j)<=7
% interpolamos entre la seccion L=6 y L=7
% definimos el peso: W
W=((l(j)-6)/(7-6));
Cd(j,:)=W*Cd7 + (1-W)*Cd6;
Cl(j,:)=W*Cl7 + (1-W)*Cl6;
Cm(j,:)=W*Cm7 + (1-W)*Cm6;
elseif l(j)<=9
% interpolamos entre la seccion L=7 y L=9
% definimos el peso: W
W=((l(j)-7)/(9-7));
Cd(j,:)=W*Cd9 + (1-W)*Cd7;
Cl(j,:)=W*Cl9 + (1-W)*Cl7;
Cm(j,:)=W*Cm9 + (1-W)*Cm7;
elseif l(j)<=11
% interpolamos entre la seccion L=9 y L=11
27. % definimos el peso: W
W=((l(j)-9)/(11-9));
Cd(j,:)=W*Cd11 + (1-W)*Cd9;
Cl(j,:)=W*Cl11 + (1-W)*Cl9;
Cm(j,:)=W*Cm11 + (1-W)*Cm9;
elseif l(j)<=13
% interpolamos entre la seccion L=11 y L=13
% definimos el peso: W
W=((l(j)-11)/(13-11));
Cd(j,:)=W*Cd13 + (1-W)*Cd11;
Cl(j,:)=W*Cl13 + (1-W)*Cl11;
Cm(j,:)=W*Cm13 + (1-W)*Cm11;
elseif l(j)<=15
% interpolamos entre la seccion L=13 y L=15
% definimos el peso: W
W=((l(j)-13)/(15-13));
Cd(j,:)=W*Cd15 + (1-W)*Cd13;
Cl(j,:)=W*Cl15 + (1-W)*Cl13;
Cm(j,:)=W*Cm15 + (1-W)*Cm13;
elseif l(j)<=17
% interpolamos entre la seccion L=15 y L=17
% definimos el peso: W
W=((l(j)-15)/(17-15));
Cd(j,:)=W*Cd17 + (1-W)*Cd15;
Cl(j,:)=W*Cl17 + (1-W)*Cl15;
Cm(j,:)=W*Cm17 + (1-W)*Cm15;
elseif l(j)<=19
% interpolamos entre la seccion L=17 y L=19
% definimos el peso: W
W=((l(j)-17)/(19-17));
Cd(j,:)=W*Cd19 + (1-W)*Cd17;
Cl(j,:)=W*Cl19 + (1-W)*Cl17;
Cm(j,:)=W*Cm19 + (1-W)*Cm17;
elseif l(j)<=21
% interpolamos entre la seccion L=19 y L=21
% definimos el peso: W
W=((l(j)-19)/(21-19));
Cd(j,:)=W*Cd21 + (1-W)*Cd19;
Cl(j,:)=W*Cl21 + (1-W)*Cl19;
Cm(j,:)=W*Cm21 + (1-W)*Cm19;
elseif l(j)<=23
% interpolamos entre la seccion L=21 y L=23
% definimos el peso: W
W=((l(j)-21)/(23-21));
Cd(j,:)=W*Cd23 + (1-W)*Cd21;
Cl(j,:)=W*Cl23 + (1-W)*Cl21;
Cm(j,:)=W*Cm23 + (1-W)*Cm21;
elseif l(j)<=25
% interpolamos entre la seccion L=23 y L=25
% definimos el peso: W
W=((l(j)-23)/(25-23));
Cd(j,:)=W*Cd25 + (1-W)*Cd23;
Cl(j,:)=W*Cl25 + (1-W)*Cl23;
Cm(j,:)=W*Cm25 + (1-W)*Cm23;
elseif l(j)<=26
% interpolamos entre la seccion L=25 y L=26
% definimos el peso: W
W=((l(j)-25)/(26-25));
Cd(j,:)=W*Cd26 + (1-W)*Cd25;
Cl(j,:)=W*Cl26 + (1-W)*Cl25;
Cm(j,:)=W*Cm26 + (1-W)*Cm25;
28. end
end
RAFAGA_PARKED.M
% Programa de determinación de las fuerzas a las que esta sometida la
pala con el rotor parada bajo condiciones extremas de carga
% Llamada a los programas que contienen la geometria del rotor.
%palalm % programa q tiene la geometria de pala LM 26 (R = 26m)
%rotor17 % programa q tiene la geometria de una pala de rotor 17m (R =
8.5m)
rbuje=1; % (m)
L=26; % (m)
R=L+rbuje; % Radio de 27 m.
%tetarad=tetagrad*pi/180; % distribución de torsion (radianes)
%x=0.2:0.01:1;
%x=0.1:0.01:1;
x=(7:2:25)*(1/L); % vector de puntos con longitudes adimensionales con
la longitud de la pala.
puntos=length(x); % numero de puntos en q dividimos la pala
elementos=puntos-1; % numero de elementos de pala en que queda
dividida la misma.
l=x*L; % distribucion de longitudes de pala (distancias medidas desde
la base de la pala)
r=l+rbuje; % distribución de radios
%lambda=6; % cociente entre la velocidad de punta de pala y la
velocidad viento en el buje
N=3; % número de palas de la aeroturbina (separadas por tanto 120
grados entre si).
ro=1.225; % densidad del aire a T=25ºC
nu=1.5e-5; % viscosidad cinematica del aire a T=25ºC, nu = viscosidad
dinamica/ro (m^2/s)
%Vhub=11; % velocidad del viento en m/s en el buje del aerogenerador
%omega=lambda*Vhub/R; % velocidad de giro de la aeroturbina (rad/s)
%omrpm=omega*(60/(2*pi)); % velocidad giro en rpm
%omrpm=25; % velocidad de giro de la maquina en revoluciones por
minuto
%omega=omrpm/(60/(2*pi)); % velocidad de giro de la maquina en rad/s
%Vhub=omega*R/lambda; % velocidad del viento a la altura del buje
(m/s)
Vhub=70;
%lambda=omega*R/Vhub;
hbuje=50; % altura del buje. Se puede utilizar la expresion
hbuje=0.75D +10 m siendo D el diámetro del rotor.
%cuerda=spline(rc,c,r); % valores de cuerda para cada valor del vector
x
%teta=spline(rt,tetarad,r); % valores de angulo de torsion para
valores de x (radianes)
[cuerda,torsion,espesorrel]=palalmlineal(l); % variacion lineal de la
cuerda.
%[cuerda,torsion,espesorrel]=palalmpotencial(l); % variacion potencial
de la cuerda.
29. teta=torsion*pi/180; % pasamos torsion q esta en grados a radianes.
giro1=pi/2; % angulo de giro en el que se encuentra la pala 1 en el
plano del rotor
h1=hbuje+r.*sin(giro1); % vector de alturas de los elementos de pala
de la pala 1.
[alfa,cl,cd,cm] = polarespala(l); % Obtenemos los datos de las curvas
polares de las secciones.
alfagrad=90-torsion; % angulos de ataque de las secciones
for j=1:puntos
coefsust(j)=pchip(alfa,cl(j,:),alfagrad(j));
coefresist(j)=pchip(alfa,cd(j,:),alfagrad(j));
coefmoment(j)=pchip(alfa,cm(j,:),alfagrad(j));
end
deltaR=2; % elemento diferencial de radio
t0=3; % tiempo de duración del análisis
t=0:0.01:t0; % vector de tiempos
long=length(t);
I=0.14; % factor de intensidad de la turbulencia
omega=10; % frecuencia de las turbulencias en rad/s
tipo=2;
[xg,yg] = cmasas(l,tipo);
%[cuerda,torsion] = palalmlineal(l);
for j=1:long
v1=(Vhub*(h1/hbuje).^0.11)*(1-I*cos(omega*t(j))); % vector de
velocidades de viento incidente en cada tramo de la pala 1.
% distribución de fuerza axial en las palas (Newton)
Fax(j,:)=0.5*ro*cuerda(1:puntos).*(v1.^2).*coefresist*deltaR;
% Numero de Reynolds del perfil:
Re(j,:)=(v1.*cuerda(1:puntos))/nu;
% distribucion de fuerza tangencial en las palas (Newton)
Ftan(j,:)=0.5*ro*cuerda(1:puntos).*(v1.^2).*coefsust*deltaR;
% distribucion de momentos torsores o de cabeceo en los perfiles
(N*m).
Mca(j,:)=0.5*ro*((cuerda(1:puntos)).^2).*(v1.^2).*coefmoment*deltaR;
31. GEOMETRÍA Y PARÁMETROS ESTRUCTURALES
NACA44XX.M
% Funcion q nos determinara la forma de un perfil naca 44xx de cuerda
1.
function [Xu,Yu,Xl,Yl] = naca44xx(t)
% Variables de entrada:
% t = espesor por unidad de cuerda del perfil (valores entre 0 y
1)
% Variables de salida:
% Xu,Yu (upper) : determinan la forma del extrados del perfil
(zona
% superior)
% Xl,Yl (lower) : determinan la forma del intrados del perfil
(zona
% inferior)
% Perfiles NACA serie 4.
% NACA cuatro cifras:
% - La primera cifra indica la máxima flecha de la línea media en %
con respecto a la cuerda.
% Esta cifra define el parámetro m.
% - La segunda cifra expresa la posición de la máxima flecha de la
línea media con respecto
% al borde de ataque, en tanto por diez respecto de la cuerda.
Parámetro p.
% - Por último las dos últimas cifras indican el espesor máximo del
perfil en % con respecto
% a la cuerda. Parámetro t.
% De esta forma un perfil NACA 2415 presenta un espesor máximo de 15%
relativo a cuerda (t=grosor/c=0.15) con
% un valor de flecha máxima de la línea media del 2% relativo a la
cuerda (m=Yc/c=0.02) situado a una
% distancia del 40% de la cuerda desde el borde de ataque del perfil
(p=posicion Yc/c=0.4).
% A continuación escribiremos las ecuaciones que nos permitan
determinar la geometria de este
% tipo de perfiles. En función de los valores otorgados a m,p y t
obtendremos un perfil u
% otro de la mencionada serie.
% A modo de ejemplo realizaremos el estudio del perfil NACA 4415.
m=0.04;
p=0.4;
%[a,b]=TEXTREAD('extrados4415.txt','%f%f','headerlines',1);
%x=a(end:-1:1)';
x=0:0.01:1; % Vector de puntos de la cuerda (cuerda unitaria)
32. % Línea de curvatura media:
k=0;
for s=x
k=k+1;
if s<=p
Yc(k)=(m/p^2)*(2*p*s-s^2);
DerYc(k)=(m/p^2)*(2*p-2*s);
teta(k)=atan(DerYc(k));
else
Yc(k)=(m/(1-p)^2)*((1-2*p)+2*p*s-s^2);
DerYc(k)=(m/(1-p)^2)*(2*p-2*s);
teta(k)=atan(DerYc(k));
end
end
% Distribución de espesor:
Yt=(t/0.2)*(0.2969*x.^0.5-0.1260*x-0.3516*x.^2+0.2843*x.^3-
0.1015*x.^4);
% Extradós del perfil(parte superior):
Xu=x-Yt.*sin(teta);
Yu=Yc+Yt.*cos(teta);
% Intradós del perfil(parte inferior):
Xl=x+Yt.*sin(teta);
Yl=Yc-Yt.*cos(teta);
PALALMLINEAL.M
% Funcion que nos determina la geometria de la pala a una distancia l.
function [cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(l)
% Variables de entrada: Longitud en el que se quiere determinar la
cuerda del
% perfil (m). (valores comprendidos entre 0 y L = 26m.)
% Variables de salida:
% - Cuerda del perfil para una determinada distancia (m).
% - Angulo de torsion o encastre (grados) del perfil para una
longitud l.
% - Espesor relativo del perfil en tanto por uno de la cuerda (m)
para
% una longitud dada l (m).
% - Offset sobre el eje X de cada seccion, es decir, punto de
% interseccion de la seccion con el eje X de envergadura de pala (en
% tanto pot uno respecto de la cuerda de cada seccion)
% - Posicion en tanto por uno de la cuerda que ocupa la web1 en los
% distintos perfiles
% - Posicion en tanto por uno de la cuerda que ocupa la web2 en los
% distintos perfiles
% - Distribucion de grosor de material a lo largo de la envergadura
de
33. % la pala (m).
L=26; % 26m de longitud de pala
lon=length(l);
for i=1:lon
if l(i)<0 | l(i)>L
error('introduzca un/unos valor/es de longitud entre L=0 y L=26
(m)')
end
end
% Vamos a generar la siguiente distribucion de cuerdas. También
% estableceremos las distribuciones de xoffset (como se coloca cada
seccion
% perpendicularmente al eje X de la pala, punto de corte de la seccion
con
% el eje X), la distribucion de las webs(listones perpendiculares q
unen el
% extrados e intrados del perfil para otorgarle mayor consistencia a
la
% seccion) y el espesor de material en cada seccion.
relaspecto=0.02/0.15; % esta es la relacion grosor material/grosor del
perfil.
%espe=0.02; % tanto por uno respecto de la cuerda que quiero de
espesor en las secciones.
%C1=2.3; % cuerda maxima de la pala (m)
n=-2; % exponente de la funcion de ajuste en las webs.(mas abajo
indicado) en el tramo < lc1
% Si n=1 ===> Funcion lineal
% Si n distinto de 1 ===> Funcion potencial
% * n=0.5 ==> funcion raiz cuadrada sqrt(x)
% * n=-1 ==> funcion 1/x
% * n=-0.5 ==> funcion 1/sqrt(x)
% * n=-2 ==> funcion 1/(x^2) ...................
ajustar a la q mas nos guste.
% Definimos los valores en las zonas clave de la pala:
% Fin de la raiz:
lc0=3; % longitud donde finaliza la zona que es igual q la raiz (m)
C0=1.5; % cuerda en la raiz (m)
xoffsraiz=0.5*C0; % offset de la raiz (m)
dweb1raiz=(relaspecto/2)*C0; % distancia desde el borde de ataque
hasta la linea media de web1 en la raiz (m)
web1raiz=abs(xoffsraiz-dweb1raiz); % distancia absoluta de la linea
media de la web1 al eje X longitudinal de la pala (m)
dweb2raiz=C0-(relaspecto/2)*C0; % distancia desde el borde de ataque
hasta la linea media de web2 en la raiz (m)
web2raiz=abs(xoffsraiz-dweb2raiz); % distancia absoluta de la linea
media de la web2 al eje X longitudinal de la pala (m)
% Perfil de cuerda maxima de la pala
lc1=6; % longitud del perfil de cuerda maxima (m)
C1=2.3; % cuerda maxima de la pala (m)
xoffsmax=0.325*C1; % offset en el perfil de cuerda maxima (m)
dweb1max=0.15*C1; % distancia desde el borde de ataque hasta la linea
media de web1 en el perfil de cuerda maxima (m)
web1max=abs(xoffsmax-dweb1max); % distancia absoluta de la linea media
de la web1 al eje X longitudinal de la pala (m)
34. dweb2max=0.5*C1; % distancia desde el borde de ataque hasta la linea
media de web2 en el perfil de cuerda maxima (m)
web2max=abs(xoffsmax-dweb2max); % distancia absoluta de la linea media
de la web2 al eje X longitudinal de la pala (m)
% Punta de la pala
lc2=L; % longitud de la punta de la pala (m)
C2=0.525; % cuerda en la punta de pala (m)
xoffspunta=0.3*C2; % offset en el perfil de cuerda maxima (m)
dweb1punta=0.15*C2; % distancia desde el borde de ataque hasta la
linea media de web1 en el perfil de punta de pala (m)
web1punta=abs(xoffspunta-dweb1punta); % distancia absoluta de la linea
media de la web1 al eje X longitudinal de la pala (m)
dweb2punta=0.5*C2; % distancia desde el borde de ataque hasta la linea
media de web2 en el perfil de punta de pala (m)
web2punta=abs(xoffspunta-dweb2punta); % distancia absoluta de la linea
media de la web2 al eje X longitudinal de la pala (m)
for j=1:lon
if l(j)<lc0
cuerda(j)=C0;
xoffset(j)=xoffsraiz/cuerda(j);
% no hay webs en este tramo, de forma q vamos a hacer q estan
% fusionadas con el espesor de la raiz, para obtener todos los
% vectores de la misma longitud.
dejeweb1(j)=web1raiz; % distancia de la web1 al eje X
web1(j)=(xoffset(j)*cuerda(j)-dejeweb1(j))/cuerda(j);
dejeweb2(j)=web2raiz; % distancia de la web2 al eje X
web2(j)=(xoffset(j)*cuerda(j)+dejeweb2(j))/cuerda(j);
%grosmat(j)=espe*C1; % grosor de material en este tramo (2% de
la cuerda maxima)
elseif l(j)< lc1
cuerda(j)=C0+((C1-C0)/(lc1-lc0))*(l(j)-lc0);
xoffset(j)=(xoffsraiz+((xoffsmax-xoffsraiz)/(lc1-lc0))*(l(j)-
lc0))/cuerda(j);
dejeweb1(j)=web1raiz+((web1max-web1raiz)/(lc1^n-
lc0^n))*(l(j)^n-lc0^n); % variacion potencial de la dist. al eje de la
web1
web1(j)=(xoffset(j)*cuerda(j)-dejeweb1(j))/cuerda(j);
dejeweb2(j)=web2raiz+((web2max-web2raiz)/(lc1^n-
lc0^n))*(l(j)^n-lc0^n); % variacion potencial de la dist. al eje de la
web2
web2(j)=(xoffset(j)*cuerda(j)+dejeweb2(j))/cuerda(j);
%dejeweb1(j)=web1raiz+((web1max-web1raiz)/(lc1-lc0))*(l(j)-
lc0); % variacion lineal de la dist. al eje de la web1
%dejeweb2(j)=web2raiz+((web2max-web2raiz)/(lc1-lc0))*(l(j)-
lc0); % variacion lineal de la dist. al eje de la web2
%grosmat(j)=espe*C1;% grosor de material en este tramo (2% de
la cuerda maxima)
else
cuerda(j)=C1+((C1-C2)/(lc1-lc2))*(l(j)-lc1);
xoffset(j)=(xoffsmax+((xoffsmax-xoffspunta)/(lc1-lc2))*(l(j)-
lc1))/cuerda(j);
dejeweb1(j)=web1max+((web1max-web1punta)/(lc1-lc2))*(l(j)-
lc1); % variacion lineal de la dist. al eje de la web1
web1(j)=(xoffset(j)*cuerda(j)-dejeweb1(j))/cuerda(j);
dejeweb2(j)=web2max+((web2max-web2punta)/(lc1-lc2))*(l(j)-
lc1); % variacion lineal de la dist. al eje de la web2
web2(j)=(xoffset(j)*cuerda(j)+dejeweb2(j))/cuerda(j);
35. %grosmat(j)=espe*cuerda(j);% grosor de material en este tramo
(2% de la cuerda)
end
end
% A continuacion obtendremos el angulo de torsion de la misma forma
que para la pala lm 26
% DISTRIBUCION ANGULO DE TORSION DE LA PALA (grados): datos obtenidos
libro
% 'Sistemas eólicos de produccion de energia electrica'.
lt=(0:0.5:L); % longitudes para los angulos de torsion (m)
tetagrad=[0 0 0 0 0 0 0 8 10 11.5 12.75 14 15 14 12.75 12 11 10 9 8.5
8 7.5 7 6.5 6.25 6 5.5 5.25 5 4.5 4.25 4 3.5 3.25 3 2.75 2.5 2.25 2
1.75 1.5 1.25 1 0.9 0.8 0.7 0.5 0.25 0.2 0.1 0 0 0];
long=length(lt);
%definimos las coordenadas de los puntos x,y por los que hacemos pasar
la
%funcion:
x1=lc1; x4=lt(long); x2=12; x3=20;
y1=tetagrad(x1/0.5+1); y4=tetagrad(long); y2=tetagrad(x2/0.5+1);
y3=tetagrad(x3/0.5+1);
%potencias de la funcion:
pot=6;
pot2=-1.5;
MM=[x1^pot x1^pot2 x1 1;x2^pot x2^pot2 x2 1;x3^pot x3^pot2 x3 1;x4^pot
x4^pot2 x4 1];
q=[y1 y2 y3 y4]';
solu=MMq;
%la funcion es del tipo:
%Fun=solu(1)*l.^pot + solu(2)*l.^pot2 + solu(3)*l + solu(4);
for j=1:lon
if l(j)<=3
torsion(j)=0;
elseif (l(j)>3) & (l(j)<6)
torsion(j)=spline(lt,tetagrad,l(j)); % valores de angulo de
torsion para valores de l (grados)
else
torsion(j)=solu(1)*l(j).^pot + solu(2)*l(j).^pot2 + solu(3)*l(j) +
solu(4);
end
end
% A continuacion representamos el espesor maximo relativo a la cuerda
para la pala lm 26
% DISTRIBUCION ESPESOR RELATIVO DE LA PALA (tanto por uno DE LA
CUERDA):datos obtenidos libro
% 'Sistemas eólicos de produccion de energia electrica'.
le=lt; % longitudes de las secciones a estudio (m)
esperel=[1 1 1 1 1 1 1 0.875 0.775 0.7 0.62 0.55 0.5 0.46 0.44 0.41
0.39 0.375 0.35 0.33 0.315 0.3 0.29 0.28 0.27 0.26 0.25 0.25-
(0.05/8)*(1:8) 0.2-(0.05/18)*(1:18)];
%definimos las coordenadas de los puntos x,y por los que hacemos pasar
la
%funcion:
36. xx1=3; xx4=le(long); xx2=7 ; xx3=20; % si ponemos xx1=6 ==>xx2=10; si
xx1=3 ==> xx2=7
yy1=esperel(xx1/0.5+1); yy4=esperel(long); yy2=esperel(xx2/0.5+1);
yy3=esperel(xx3/0.5+1);
%potencias de la funcion:
po=0.5;
po2=-0.5;
Mat=[xx1^po xx1^po2 xx1 1;xx2^po xx2^po2 xx2 1;xx3^po xx3^po2 xx3
1;xx4^po xx4^po2 xx4 1];
qu=[yy1 yy2 yy3 yy4]';
so=Matqu;
%la funcion es del tipo:
%Fun2=so(1)*l.^po + so(2)*l.^po2 + so(3)*l + so(4);
for j=1:lon
if l(j)<=3
espesorrel(j)=1;
else
espesorrel(j)=so(1)*l(j).^po + so(2)*l(j).^po2 + so(3)*l(j) +
so(4); % valores del espesor maximo relativo a la cuerda del perfil
para valores de l (adim)
end
end
% finalmente definiremos la distribucion de grosores GROSMAT
%relaspecto=0.02/0.15; % esta es la relacion grosor material/grosor
del perfil.
for j=1:lon
if l(j)<lc0
grosmat(j)=relaspecto*espesorrel(j)*cuerda(j);
elseif l(j)< lc1
grosmat(j)=relaspecto*espesorrel(j)*cuerda(j);
else
grosmat(j)=relaspecto*espesorrel(j)*cuerda(j);
end
end
grosmat=0.95*grosmat;
SECCIONEXTPCHIP.M
% La siguiente funcion nos va a dar la seccion exterior de los
perfiles de
% la pala a estudio.
function [x,yextra,yintra,area]=seccionextpchip(planosZ)
% Variables de entrada: vector con los planos Z donde quiero la
seccion
% Variables salida:
% x: Matriz cuyas filas son las coordenadas de las x
extrados para
% cada plano de corte Z
% x=xextra=xintra
% yextra: Matriz cuyas filas son las coordenadas de las y
extrados para
% cada plano de corte Z
37. % yintra: Matriz cuyas filas son las coordenadas de las y
intrados para
% cada plano de corte Z
% Este programa nos generara las secciones de cualquier zona de la
pala. La
% pala la podemos dividir en tres partes diferenciadas: 1- la zona de
% encastre q es de seccion circular, 2- zona de transicion de la zona
% circular a la zona aerodinamica de perfiles, 3- zona puramente
% aerodinamica compuesta por perfiles aerodinamicos hasta la punta de
pala.
% Para ello definiremos las dos secciones entre las q se encuentra la
% transicion descrita (seccion circular y perfil de cuerda maxima)
mediante
% el mismo numero de puntos, uniremos los puntos de una seccion con
los de
% la otra (dos a dos) para obtener rectas en tres dimensiones de las
que
% obtendremos sus ecuaciones, y al cortar por planos perpendiculares
al de
% envergadura o longitud de la pala (X) obtendremos puntos de las
secciones
% interiores de transicion.
for i=planosZ
if i<0 | i>26
error('introduzca un/unos valor/es de distancia del plano entre
L=0 y L=26 (m)')
end
end
% Secciones límite en la zona de transicion:
% 1- Seccion circular:(cir)
lcir=3; % distancia a la que se encuentra la seccion 1 de la raiz de
la pala (m)
% llamamos a la funcion que tiene la geometria de la pala
[cuerdacir,torsioncir,espesorrelcir,xoffsetcir,web1cir,web2cir,grosmat
cir] = palalmlineal(lcir);
rcir=cuerdacir/2; % radio de la seccion
% como ejes de las secciones definimos los ejes x,y como eje x en
% direccion de la cuerda y eje y el perpendicular.
npuntos=101;
xcir=linspace(-rcir,rcir,npuntos); % generamos 101 puntos
equiespaciados ==> dividimos en 100 partes el diametro.
ycirsup=(rcir^2-xcir.^2).^0.5; % parte superior de la seccion
ycirinf=-((rcir^2-xcir.^2).^0.5); % parte inferior de la seccion
% 2- Seccion perfil de cuerda maxima:(per)
lper=6; % distancia a la que se encuentra el perfil de cuerda maxima
de la raiz de la pala (m)
% llamamos a la funcion que tiene la geometria de la pala
[cuerdaper,torsionper,espesorrelper,xoffsetper,web1per,web2per,grosmat
per] = palalmlineal(lper);
% Generamos el perfil de cuerda unidad y espesor espesorrelper
[Xuunit,Yuunit,Xlunit,Ylunit] = naca44xx(espesorrelper);
% Multiplicamos estos valores por la cuerda del perfil
Xuper=Xuunit*cuerdaper;
38. Yuper=Yuunit*cuerdaper;
Xlper=Xlunit*cuerdaper;
Ylper=Ylunit*cuerdaper;
% Definimos el vector de puntos a lo largo de la cuerda:
xper0=linspace(0,cuerdaper,npuntos);
% Obtenemos los puntos correspondientes a este vector en el extrados
e intrados del
% perfil mediante un ajuste con los polinomios cubicos a trozos
% (pchip en principio mejor que con spline):
ypersup=pchip(Xuper,Yuper,xper0);
yperinf=pchip(Xlper,Ylper,xper0);
% La altura o coordenada y de los puntos no varia al aplicar el
offset
% del perfil. Solo varia la coordenada x:
xper=xper0-xoffsetper*cuerdaper;
% Ya tenemos los puntos que definen las secciones limite.
% Nota : hemos realizado el ajuste de las funciones antes del offset.
% A continuacion estableceremos las rectas que unen los puntos de las
% secciones dos a dos, para poder determinar los puntos de
interseccion de
% esas rectas con planos perpendiculares al eje longitudinal de la
pala,
% definiendo asi las secciones en los distintos planos.
% Una recta en 3D entre 2 puntos A(x1,y1,z1) y B(x2,y2,z2) se puede
definir
% de la siguiente forma:
% y=a*x+b donde a=pendientexy=v2/v1; b=o.origenxy=y1-(v2/v1)*x1
% z=c*x+d donde c=pendientexz=v3/v1; b=o.origenxz=z1-(v3/v1)*x1
% siendo v=vector director=(v1,v2,v3)=(x2-x1,y2-
y1,z2-z1)
% De esta forma introduciendo un valor para x, se obtiene y(x) y z(x).
% Tomamos como ejes positivos de la pala los mencionados
anteriormente, x direccion
% cordal de las secciones y sentido borde de salida del perfil, y
% perpendicular a x con sentido hacia el extrados del perfil, y z
direccion
% perpendicular a las secciones (longitudinal a la pala) hacia la
punta de
% pala.
% Rectas del extrados:
% Generamos los vectores directores de las rectas: v=AB=B(x,y,z)-
A(x,y,z)
% siendo B los puntos del perfil y A los de la seccion mas proxima a
la
% raiz.
vx_ext=(xper-xcir);
vy_ext=(ypersup-ycirsup);
vz_ext=(lper-lcir)*ones(1,length(vx_ext));
% pendientes
pend_xy_ext=vy_ext./vx_ext;
pend_xz_ext=vz_ext./vx_ext;
% ordenadas origen
oo_xy_ext=ycirsup-pend_xy_ext.*xcir;
oo_xz_ext=lcir*ones(1,length(vx_ext))-pend_xz_ext.*xcir;
39. % Rectas del intrados:
% Generamos los vectores directores de las rectas: v=AB=B(x,y,z)-
A(x,y,z)
% siendo B los puntos del perfil y A los de la seccion mas proxima a
la
% raiz.
vx_int=(xper-xcir);
vy_int=(yperinf-ycirinf);
vz_int=(lper-lcir)*ones(1,length(vx_int));
% pendientes
pend_xy_int=vy_int./vx_int;
pend_xz_int=vz_int./vx_int;
% ordenadas origen
oo_xy_int=ycirinf-pend_xy_int.*xcir;
oo_xz_int=lcir*ones(1,length(vx_int))-pend_xz_int.*xcir;
% En esta zona de transicion:
% definido un vector de planos de corte Z (variable de entrada de la
funcion)
% calculamos los puntos x,y de esa seccion, pues conocemos la variable
z,
% de la siguiente manera:
% x=(z-d)/c ====> y=a*x+b.
% Vemos la longitud del vector de planos Z:
longi=length(planosZ);
for j=1:longi
if (planosZ(j)>=0) & (planosZ(j)<=lcir)
% Hasta la longitud lcir todas las secciones son circulares e
% iguales.
% extrados
xextra(j,:)=xcir;
yextra(j,:)=ycirsup;
% intrados
xintra(j,:)=xcir;
yintra(j,:)=ycirinf;
% CALCULO DEL AREA:
area(j)=pi*(cuerdacir/2)^2;
% metodo Hermite:
aexttrap= sum(diff(xextra(j,:)).*(yextra(j,1:end-
1)+yextra(j,2:end))/2)-sum(diff(xintra(j,:)).*(yintra(j,1:end-
1)+yintra(j,2:end))/2); % regla trapecio compuesta
% ahora lo calculamos mediante el metodo de Hermite:
hsup = diff(xextra(j,:));
deltasup = diff(yextra(j,:))./hsup;
dsup = pchipslopes(hsup,deltasup); % esto nos da las
pendientes o derivadas del polinomio interpolador de Hermite en los
puntos del perfil.
hinf = diff(xintra(j,:));
deltainf = diff(yintra(j,:))./hinf;
dinf = pchipslopes(hinf,deltainf); % esto nos da las
pendientes o derivadas del polinomio interpolador de Hermite en los
puntos del perfil.
Dsup = sum((hsup.^2).*(dsup(2:end)-dsup(1:end-1))/12);
Dinf = sum((hinf.^2).*(dinf(2:end)-dinf(1:end-1))/12);
40. areaextH=aexttrap-(Dsup-Dinf);
area(j)=areaextH;
% Calulo de las cosas usando pchip:
ppsup=pchip(xextra(j,:),yextra(j,:)); % pp = piecewise
polynomial.
ppinf=pchip(xintra(j,:),yintra(j,:));
intsup=quad(@ppval,xextra(j,1),xextra(j,end),[],[],ppsup);
intinf=quad(@ppval,xintra(j,1),xintra(j,end),[],[],ppinf);
area(j)=intsup-intinf;
elseif (planosZ(j)>lcir) & (planosZ(j)<=lper)
%Zona de transicion de la pala.Obtenemos los puntos x,y
mediante la
%interseccion de los planos de corte con las rectas trazadas
%anteriormente entre las secciones limite. Aplicando la
formula
%anteriormente descrita, al saber z, calculamos x e y para
cada
%seccion.
[cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(planosZ(j));
% extrados
xextra(j,:)=(planosZ(j)-oo_xz_ext)./pend_xz_ext;
yextra(j,:)=pend_xy_ext.*xextra(j,:)+oo_xy_ext;
% intrados
xintra(j,:)=(planosZ(j)-oo_xz_int)./pend_xz_int;
yintra(j,:)=pend_xy_int.*xintra(j,:)+oo_xy_int;
% Calulo del area usando pchip:
ppsup=pchip(xextra(j,:),yextra(j,:)); % pp = piecewise
polynomial.
ppinf=pchip(xintra(j,:),yintra(j,:));
intsup=quad(@ppval,xextra(j,1),xextra(j,end),[],[],ppsup);
intinf=quad(@ppval,xintra(j,1),xintra(j,end),[],[],ppinf);
area(j)=intsup-intinf;
else
% Aqui estamos en la zona puramente aerodinamica de la pala.
Las
% coordenadas de los perfiles las obtendremos ayudandonos de
la
% funcion q nos los genera q es naca44xx y de la distribucion
de
% espesores.
[cuerdai,torsioni,espesorreli,xoffseti,web1i,web2i,grosmati] =
palalmlineal(planosZ(j));
[Xuuniti,Yuuniti,Xluniti,Yluniti] = naca44xx(espesorreli);
Xui=Xuuniti*cuerdai;
Yui=Yuuniti*cuerdai;
Xli=Xluniti*cuerdai;
Yli=Yluniti*cuerdai;
xi0=linspace(0,cuerdai,npuntos);
% extrados
xextra(j,:)=xi0-xoffseti*cuerdai;
yextra(j,:)=pchip(Xui,Yui,xi0);
% intrados
xintra(j,:)=xi0-xoffseti*cuerdai;
yintra(j,:)=pchip(Xli,Yli,xi0);
% Calculo del area de las secciones utilizando pchip:
ppsup=pchip(xextra(j,:),yextra(j,:)); % pp = piecewise
polynomial.
41. ppinf=pchip(xintra(j,:),yintra(j,:));
intsup=quad(@ppval,xextra(j,1),xextra(j,end),[],[],ppsup);
intinf=quad(@ppval,xintra(j,1),xintra(j,end),[],[],ppinf);
area(j)=intsup-intinf;
end
end
% NOTA:
% Como hemos usado los mismos valores de x para las funciones de
intrados y
% extrados, los valores de xextra y xintra q se obtienen son los
mismos, de
% forma q podiamos poner un unico valor de salida x que fuera
% x=xextra=xintra.
x=xextra; % o x=xintra
SECCIONTOTPCHIP.M
% La siguiente funcion nos va a dar exactamente las distintas
secciones de
% la pala a estudio en funcion de su distancia al encastre de la pala.
function
[xext,yextraext,yintraext,xint,yextraint,yintraint,area]=secciontotpch
ip(planosZ,tipo)
% La variable tipo nos va a definir distintos tipos de interiores de
la
% pala. Asi, llamaremos:
% TIPO = 1: La pala interiormente tiene una distribucion de webs que
es la
% que viene dada por el programa que especifica la geometria de la
pala (en
% nuestro caso,palalmlineal).
% TIPO = 2: La pala interiormente solo presenta la distribucion de
webs en
% la zona puramente aerodinamica, tb segun indica palalmlineal.
% TIPO = 3: La pala interiormente no presenta ninguna distribucion de
webs.
if nargin < 2 || isempty(tipo), tipo = 1; end; % si no ponemos nada en
tipo o ponemos la matriz vacia analizamos por defecto el tipo 1 de
pala.
for i=planosZ
if i<0 | i>26
error('introduzca un/unos valor/es de distancia del plano entre
L=0 y L=26 (m)')
end
end
if (tipo==1) | (tipo==2) | (tipo==3)
% puede comenzar el programa
else
error('introduzca un valor de tipo que sea 1, 2 o 3
correspondiente a los modelos de pala')
42. end
% Las coordenadas de la zona exterior de la seccion las obtenemos
mediante
% la funcion seccionext.
[xext,yextraext,yintraext,areaext]=seccionextpchip(planosZ);
% Para calcular ahora la parte interna de seccion procedemos como
hemos hecho
% anteriormente:
% Vemos la longitud del vector de planos Z:
longi=length(planosZ);
global puntoscelda
global poscfinal
global poscinicial
puntoscelda=33; % poner un numero impar que sea multiplo de 3 (numero
de celdas).
% si lo ponemos par nos da luego problemas al hacer
diff(y)
% en el programa de calculos de inercia posterior. Si
lo
% ponemos par, hay q cambiar en mominercia la manera
de
% calcular el mominerciax de la parte circular de la
pala,
% hacer la forma que usa pchip y quad.
k=0;
for j=1:longi
if (planosZ(j)>=0) & (planosZ(j)<=3)
[cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(planosZ(j));
rcirint=cuerda/2-grosmat; % radio de la seccion interior
% como ejes de las secciones definimos los ejes x,y como eje x
en
% direccion de la cuerda y eje y el perpendicular.
npuntos=3*puntoscelda;
xcir=linspace(-rcirint,rcirint,npuntos); % generamos
''npuntos'' puntos equiespaciados.
ycirsup=(rcirint^2-xcir.^2).^0.5; % parte superior de la
seccion interior
ycirinf=-((rcirint^2-xcir.^2).^0.5); % parte inferior de la
seccion interior
% extrados
xextra(j,:)=xcir;
yextraint(j,:)=ycirsup;
% intrados
xintra(j,:)=xcir;
yintraint(j,:)=ycirinf;
% como las xextra y xintra son iguales:
xint(j,:)=xextra(j,:);
% CALCULO DEL AREA:
% El area de estas secciones es el area de una corona
circular:
area(j)=areaext(j)-pi*rcirint^2;
%area2(j)=area(j);
%areawebs(j)=area(j);
43. else
k=k+1; % contador para la variable poscinicial y poscfinal.
ver mas abajo.
[cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(planosZ(j));
% Puntos del contorno interno de la seccion (extrados/intrados
% interno): necesito primero obtener la derivada del contorno
externo
% de la seccion.
% Calcularemos a continuacion la forma interior, mediante
% los polinomios de Hermite de interpolacion.
hsup = diff(xext(j,:));
deltasup = diff(yextraext(j,:))./hsup;
dsup = pchipslopes(hsup,deltasup); % esto nos da las
pendientes o derivadas del polinomio interpolador de Hermite en los
puntos del perfil.
hinf = diff(xext(j,:));
deltainf = diff(yintraext(j,:))./hinf;
dinf = pchipslopes(hinf,deltainf); % esto nos da las
pendientes o derivadas del polinomio interpolador de Hermite en los
puntos del perfil.
betasup=atan(dsup);
betainf=atan(dinf);
% Extrados interno:
Xinterior=(xext(j,:))+(grosmat)*sin(betasup);
Yinterior=yextraext(j,:)-(grosmat)*cos(betasup);
%Intardos interno:
Xinterior1=(xext(j,:))+(-grosmat)*sin(betainf);
Yinterior1=yintraext(j,:)-(-grosmat)*cos(betainf);
% Definimos los parametros importantes en la seccion interna,
como son
% las posiciones de las webs y demas.
posweb11=(-xoffset+web1).*cuerda-grosmat./2;
posweb12=(-xoffset+web1).*cuerda+grosmat./2;
posweb21=(-xoffset+web2).*cuerda-grosmat./2;
posweb22=(-xoffset+web2).*cuerda+grosmat./2;
lat11sup=pchip(Xinterior,Yinterior,posweb11);; % coordenada de
lat11 q saco de la parte superior (extrados)
lat11inf=pchip(Xinterior1,Yinterior1,posweb11);% coordenada de
lat11 q saco de la parte inferior (intrados)
lat12sup=pchip(Xinterior,Yinterior,posweb12);;% coordenada de
lat12 q saco de la parte superior (extrados)
lat12inf=pchip(Xinterior1,Yinterior1,posweb12);% coordenada de
lat12 q saco de la parte inferior (intrados)
lat21sup=pchip(Xinterior,Yinterior,posweb21);;% coordenada de
lat21 q saco de la parte superior (extrados)
lat21inf=pchip(Xinterior1,Yinterior1,posweb21);% coordenada de
lat21 q saco de la parte inferior (intrados)
lat22sup=pchip(Xinterior,Yinterior,posweb22);;% coordenada de
lat22 q saco de la parte superior (extrados)
lat22inf=pchip(Xinterior1,Yinterior1,posweb22);% coordenada de
lat22 q saco de la parte inferior (intrados)
44. % Obtengo puntos equidistantes entre los puntos superior e
inferior de cada
% pared de cada lateral.
lat11=linspace(lat11inf,lat11sup,20); % su coordenada x es
posweb11
lat12=linspace(lat12inf,lat12sup,20); % su coordenada x es
posweb12
lat21=linspace(lat21inf,lat21sup,20); % su coordenada x es
posweb21
lat22=linspace(lat22inf,lat22sup,20); % su coordenada x es
posweb22
% Vamos a ir obteniendo el vector de puntos que me definan la
parte
% superior e inferior del perfil por su parte interna.
% puntoscelda ====> estan definidos al principio del bucle.
% Primeramente tenemos que calcular en este caso donde donde
se juntan
% las funciones de intrados y extrados (las internas se
sobreentiende),
% pues ambas convergen en dos puntos, uno en el borde de
ataque de la
% seccion y otro en el borde de salida, que son precisamente
donde
% comiennza y acaba la cuerda interior de las secciones. Esos
puntos
% son poscinicial y poscfinal.
% Para ello haremos un barrido de las funciones y cuando su
diferencia
% sea nula obtendremos los valores finales de poscinicial y
poscfinal.
% POSCINICIAL:
% Establecemos el paso del barrido:
paso=-0.001*cuerda;
% Hacemos el barrido
for x=posweb12:paso:-xoffset*cuerda
Wu=pchip(Xinterior,Yinterior,x);
Wl=pchip(Xinterior1,Yinterior1,x);
dif=Wu-Wl;
if dif<0
xanterior=x-paso;
%interpolamos entre x y x anterior la solucion
poscinicial(k)=xanterior+((x-xanterior)/(difanterior-
dif))*difanterior;
break
elseif dif==0
poscinicial(k)=x;
break
end
difanterior=dif; % guardamos el valor de dif q es positivo
para poderlo usar en la interpolacion al encontrar el negativo
siguiente.
end
% POSCFINAL:
% Establecemos el paso del barrido:
45. paso2=0.001*cuerda;
% Hacemos el barrido
for x=posweb21:paso2:cuerda-xoffset*cuerda
Wu=pchip(Xinterior,Yinterior,x);
Wl=pchip(Xinterior1,Yinterior1,x);
dif=Wu-Wl;
if dif<0
xanterior=x-paso;
%interpolamos entre x y x anterior la solucion
poscfinal(k)=xanterior+((x-xanterior)/(difanterior-
dif))*difanterior;
break
elseif dif==0
poscfinal(k)=x;
break
end
difanterior=dif; % guardamos el valor de dif q es positivo
para poderlo usar en la interpolacion al encontrar el negativo
siguiente.
end
% Ahora ya sabiendo el valor de poscinicial y poscfinal
empezamos a
% calcular los puntos iinteriores de la seccion.
% Dependiendo de si estos valores son mayores o menores q los
valores
% de posicion de las webs tendremos mas o menos celdas
interiores en la
% seccion. Asi:
if (tipo==1) | ((tipo==2)&(planosZ(j)>=6))
if (poscinicial(k)>=posweb11) & (poscfinal(k)<=posweb22)
% Solo tenemos una celda, la central.
npuntos=3*puntoscelda;
% CELDA CENTRAL (2):
% Usando PCHIP:
xcelda2=linspace(posweb12,posweb21,npuntos);
% Extrados interno:
[yextraint2] = pchip(Xinterior,Yinterior,xcelda2);
%Intardos interno:
[yintraint2] = pchip(Xinterior1,Yinterior1,xcelda2);
% introducimos estos datos en las variables de salida:
xint(j,:)=xcelda2;
yextraint(j,:)=yextraint2;
yintraint(j,:)=yintraint2;
elseif (poscinicial(k)<posweb11) &
(poscfinal(k)<=posweb22)
% Tenemos celda izquierda y central, pero derecha no.
npuntos0=(3*puntoscelda-1)/2; % como puntos celda es
impar hay que hacer q una celda tenga un punto mas q la otra
npuntos1=3*puntoscelda-npuntos0;
% CELDA IZQUIERDA (1):
% Usando PCHIP:
xcelda1=linspace(poscinicial(k),posweb11,npuntos0);
% Extrados interno:
[yextraint1] = pchip(Xinterior,Yinterior,xcelda1);
%Intardos interno:
[yintraint1] = pchip(Xinterior1,Yinterior1,xcelda1); %
Aqui hemos obtenido las constantes del ajuste del perfil interno.
46. % CELDA CENTRAL (2):
% Usando PCHIP:
xcelda2=linspace(posweb12,posweb21,npuntos1);
% Extrados interno:
[yextraint2] = pchip(Xinterior,Yinterior,xcelda2);
%Intardos interno:
[yintraint2] = pchip(Xinterior1,Yinterior1,xcelda2);
% introducimos estos datos en las variables de salida:
xint(j,:)=[xcelda1 xcelda2];
yextraint(j,:)=[yextraint1 yextraint2];
yintraint(j,:)=[yintraint1 yintraint2];
elseif (poscinicial(k)>=posweb11) &
(poscfinal(k)>posweb22)
% En este caso no tendriamos celda 1, si 2 y 3.
npuntos0=(3*puntoscelda-1)/2;
npuntos1=3*puntoscelda-npuntos0;
% CELDA CENTRAL (2):
% Usando PCHIP:
xcelda2=linspace(posweb12,posweb21,npuntos0);
% Extrados interno:
[yextraint2] = pchip(Xinterior,Yinterior,xcelda2);
%Intardos interno:
[yintraint2] = pchip(Xinterior1,Yinterior1,xcelda2);
% CELDA DERECHA (3):
% Usando PCHIP:
xcelda3=linspace(posweb22,poscfinal(k),npuntos1);
% Extrados interno:
[yextraint3] = pchip(Xinterior,Yinterior,xcelda3);
%Intardos interno:
[yintraint3] = pchip(Xinterior1,Yinterior1,xcelda3);
% introducimos estos datos en las variables de salida:
xint(j,:)=[xcelda2 xcelda3];
yextraint(j,:)=[yextraint2 yextraint3];
yintraint(j,:)=[yintraint2 yintraint3];
elseif (poscinicial(k)<posweb11) & (poscfinal(k)>posweb22)
% tenemos todas las celdas:
npuntos=puntoscelda;
% CELDA IZQUIERDA (1):
% Usando PCHIP:
xcelda1=linspace(poscinicial(k),posweb11,npuntos);
% Extrados interno:
[yextraint1] = pchip(Xinterior,Yinterior,xcelda1);
%Intardos interno:
[yintraint1] = pchip(Xinterior1,Yinterior1,xcelda1); %
Aqui hemos obtenido las constantes del ajuste del perfil interno.
% CELDA CENTRAL (2):
% Usando PCHIP:
xcelda2=linspace(posweb12,posweb21,npuntos);
% Extrados interno:
[yextraint2] = pchip(Xinterior,Yinterior,xcelda2);
%Intardos interno:
[yintraint2] = pchip(Xinterior1,Yinterior1,xcelda2);
% CELDA DERECHA (3):
% Usando PCHIP:
xcelda3=linspace(posweb22,poscfinal(k),npuntos);
% Extrados interno:
[yextraint3] = pchip(Xinterior,Yinterior,xcelda3);
47. %Intardos interno:
[yintraint3] = pchip(Xinterior1,Yinterior1,xcelda3);
% introducimos estos datos en las variables de salida:
xint(j,:)=[xcelda1 xcelda2 xcelda3];
yextraint(j,:)=[yextraint1 yextraint2 yextraint3];
yintraint(j,:)=[yintraint1 yintraint2 yintraint3];
end
% CALCULO DEL AREA DE LA SECCION:
if posweb11>poscinicial(k)
ppsupcelda1=pchip(xcelda1,yextraint1); % pp =
piecewise polynomial.
ppinfcelda1=pchip(xcelda1,yintraint1);
intsupcelda1=quad(@ppval,xcelda1(1),xcelda1(end),[],[],ppsupcelda1);
intinfcelda1=quad(@ppval,xcelda1(1),xcelda1(end),[],[],ppinfcelda1);
Acelda1=intsupcelda1-intinfcelda1;
else
Acelda1=0;
end
ppsupcelda2=pchip(xcelda2,yextraint2); % pp = piecewise
polynomial.
ppinfcelda2=pchip(xcelda2,yintraint2);
intsupcelda2=quad(@ppval,xcelda2(1),xcelda2(end),[],[],ppsupcelda2);
intinfcelda2=quad(@ppval,xcelda2(1),xcelda2(end),[],[],ppinfcelda2);
Acelda2=intsupcelda2-intinfcelda2;
if poscfinal(k)>posweb22
ppsupcelda3=pchip(xcelda3,yextraint3); % pp =
piecewise polynomial.
ppinfcelda3=pchip(xcelda3,yintraint3);
intsupcelda3=quad(@ppval,xcelda3(1),xcelda3(end),[],[],ppsupcelda3);
intinfcelda3=quad(@ppval,xcelda3(1),xcelda3(end),[],[],ppinfcelda3);
Acelda3=intsupcelda3-intinfcelda3;
else
Acelda3=0;
end
area(j)=areaext(j)-(Acelda1 + Acelda2 + Acelda3);
end
if (tipo==3) | ((tipo==2)&(planosZ(j)<6))
% Obtenemos un vector de puntos representativo de todo el
perfil
% interno:
npuntos=3*puntoscelda;
xinter=linspace(poscinicial(k),poscfinal(k),npuntos);
yextrainter=pchip(Xinterior,Yinterior,xinter);
yintrainter=pchip(Xinterior1,Yinterior1,xinter);
xint(j,:)=xinter;
yextraint(j,:)=yextrainter;
yintraint(j,:)=yintrainter;
% CALCULO DEL AREA DE LA SECCION:
48. % utilizando pchip:
ppsup=pchip(xinter,yextrainter); % pp = piecewise
polynomial.
ppinf=pchip(xinter,yintrainter);
intsup=quad(@ppval,xinter(1),xinter(end),[],[],ppsup);
intinf=quad(@ppval,xinter(1),xinter(end),[],[],ppinf);
areaint=intsup-intinf;
area(j)=areaext(j)-areaint;
end
end
end
CMASAS.M
% Vamos a crear una funcion para calcular los centros de masas de las
% secciones que nos da la funcion secciontotpchip.
function [xg,yg] = cmasas(planosZ,tipo)
if nargin < 2 || isempty(tipo), tipo = 1; end;
[xext,yextraext,yintraext,xint,yextraint,yintraint,areatot]=secciontot
pchip(planosZ,tipo);
[cuerda,torsion,espesorrel,xoffset,web1,web2,grosmat] =
palalmlineal(planosZ);
posweb11=(-xoffset+web1).*cuerda-grosmat./2; % posicion de la web11
posweb12=(-xoffset+web1).*cuerda+grosmat./2; % posicion de la web12
posweb21=(-xoffset+web2).*cuerda-grosmat./2; % posicion de la web21
posweb22=(-xoffset+web2).*cuerda+grosmat./2; % posicion de la web22
global puntoscelda % numero de puntos definidos en secciontotpchip por
celda
global poscfinal % punto de interseccion de las funciones de extrados
e intrados interno en la celda 3 definidas en secciontotpchip
global poscinicial % punto de interseccion de las funciones de
extrados e intrados interno en la celda 1 de la seccion
pc=puntoscelda;
% Procedamos al calculo del primer momento de area tanto sobre el eje
x
% como sobra el eje y. Estos momentos se identifican con la leta S
(Sx,Sy)
% de forma que xg=Sy/Aseccion e yg=Sx/Aseccion.
long=length(planosZ);
k=0;
for j=1:long
% CALCULAMOS PRIMERO LO REFERENTE A LAS ZONAS EXTERIORES:
exteriorsup(1,:)=xext(j,:) + xoffset(j)*cuerda(j); % añadimos los
offsets para calcular los momentos respecto sistema ejes q pasan por
el borde ataque del perfil.
exteriorsup(2,:)=yextraext(j,:);
49. exteriorinf(1,:)=xext(j,:) + xoffset(j)*cuerda(j);
exteriorinf(2,:)=yintraext(j,:);
% Sy:
%ZONA EXTERIOR:
% utilizando solo la regla del trapecio:
integrandou=(exteriorsup(1,:)).*exteriorsup(2,:);
integrandol=(exteriorinf(1,:)).*exteriorinf(2,:);
momysup=sum(diff(exteriorsup(1,:)).*(integrandou(1:end-
1)+integrandou(2:end))/2);
momyinf=sum(diff(exteriorinf(1,:)).*(integrandol(1:end-
1)+integrandol(2:end))/2);
momyexte=momysup-momyinf;
% si añadimos el termino que se obtiene de integrar el polinomio
de
% Hermite:
hu = diff(exteriorsup(1,:));
deltau = diff(integrandou)./hu;
du = pchipslopes(hu,deltau);
Dsup = sum((hu.^2).*(du(2:end)-du(1:end-1))/12);
momysupH=momysup-Dsup;
hl = diff(exteriorinf(1,:));
deltal = diff(integrandol)./hl;
dl = pchipslopes(hl,deltal);
Dinf = sum((hl.^2).*(dl(2:end)-dl(1:end-1))/12);
momyinfH=momyinf-Dinf;
momyHexte=momysupH-momyinfH;
% Sx:
% ZONA EXTERIOR:
[maxi,indi]=max(exteriorsup(2,:));
[mini,indi2]=min(exteriorinf(2,:));
% utilizando solo la regla del trapecio:
% extrados: (up es de extrados y arriba abajo corresponde a los
dos tramos
% de curva que se ven si se plotea (y^2)*x(y) frente a y, todo de
extrados).
inteuparriba=(exteriorsup(2,end:-1:indi)).*exteriorsup(1,end:-
1:indi); % invertimos los valores para integrar la funcion en el
sentido de las x positivas.
inteuparriba2=exteriorsup(1,end)*(linspace(0,exteriorsup(2,end),30));
% esto es la funcion y*xmax
inteupabajo=(exteriorsup(2,1:indi)).*exteriorsup(1,1:indi);
inteupabajo2=exteriorsup(1,1)*(linspace(0,exteriorsup(2,1),30));%
esto es la funcion y*xmin
momxuparriba=sum(diff(exteriorsup(2,end:-
1:indi)).*(inteuparriba(1:end-1)+inteuparriba(2:end))/2)+...
sum(diff(linspace(0,exteriorsup(2,end),30)).*(inteuparriba2(1:end-
1)+inteuparriba2(2:end))/2);
momxupabajo=sum(diff(exteriorsup(2,1:indi)).*(inteupabajo(1:end-
1)+inteupabajo(2:end))/2)+...
50. sum(diff(linspace(0,exteriorsup(2,1),30)).*(inteupabajo2(1:end-
1)+inteupabajo2(2:end))/2);
momxup=momxuparriba-momxupabajo;
% intrados: low es de intrados y arriba abajo corresponde a los
dos tramos
% de curva que se ven si se plotea (y^2)*x(y) frente a y, todo de
intrados).
intelowarriba=(exteriorinf(2,end:-1:indi2)).*exteriorinf(1,end:-
1:indi2); % invierto el sentido de la curva superior para integrar en
el sentido de las x negativas (y)
intelowarriba2=exteriorinf(1,end)*(linspace(0,exteriorinf(2,end),30));
% esto es la funcion y*xmax
intelowabajo=(exteriorinf(2,1:indi2)).*exteriorinf(1,1:indi2);
intelowabajo2=exteriorinf(1,1)*(linspace(0,exteriorinf(2,1),30));%
esto es la funcion y*xmin
momxlowarriba=sum(diff(exteriorinf(2,end:-
1:indi2)).*(intelowarriba(1:end-1)+intelowarriba(2:end))/2)+...
sum(diff(linspace(0,exteriorinf(2,end),30)).*(intelowarriba2(1:end-
1)+intelowarriba2(2:end))/2);% las areas tienen q salir negativas
aqui.
momxlowabajo=sum(diff(exteriorinf(2,1:indi2)).*(intelowabajo(1:end-
1)+intelowabajo(2:end))/2)+...
sum(diff(linspace(0,exteriorinf(2,1),30)).*(intelowabajo2(1:end-
1)+intelowabajo2(2:end))/2);
momxlow=momxlowarriba-momxlowabajo;
momxexte=momxup-momxlow; % lo q vale es restar no sumar (antes lo
habia sumado)
% esta es la que vale porque ambas partes, la positiva y negativa
añaden inercia
% si no, si la seccion fuera simetrica y las sumara, daria inercia
nula y
% eso esta mal.
% si añadimos el termino que se obtiene de integrar el polinomio
de
% Hermite:
huparriba = diff(exteriorsup(2,end:-1:indi));
deltauparriba = diff(inteuparriba)./huparriba;
duparriba = pchipslopes(huparriba,deltauparriba);
Duparriba = sum((huparriba.^2).*(duparriba(2:end)-duparriba(1:end-
1))/12);
if exteriorsup(2,end)>0
huparriba2 = diff(linspace(0,exteriorsup(2,end),30));
deltauparriba2 = diff(inteuparriba2)./huparriba2;
duparriba2 = pchipslopes(huparriba2,deltauparriba2);
Duparriba2 = sum((huparriba2.^2).*(duparriba2(2:end)-
duparriba2(1:end-1))/12);
else
Duparriba2=0;
end
% tengo q poner este if porq si me dieran las coordenadas del
perfil
51. % exactas (pasando el extrados e intrados por (0,0) y (c,0)) como
hace
% Xfoil (el programa nuestro naca44xx no pasa exactamente por
(0,0) y
% (c,0)), el termino de inteuparriba se anula solo, pero a la hora
de
% añadir la parte de Hermite tendriamos problema porque
dividiriamos por 0,
% de forma q si estos puntos tienen y=0, tenemos q poner q
D=0,parte de
% Hermite nula (la parte de la regla del trapecio ya se anula sola
como
% hemos dixo antes, T=0). Esto hay q hacerlo tb para el punto del
origen
% en extrados, y repetirlo para origen y cuerda de intrados tb.
momxuparribaH=momxuparriba-Duparriba-Duparriba2;
hupabajo = diff(exteriorsup(2,1:indi));
deltaupabajo = diff(inteupabajo)./hupabajo;
dupabajo = pchipslopes(hupabajo,deltaupabajo);
Dupabajo = sum((hupabajo.^2).*(dupabajo(2:end)-dupabajo(1:end-
1))/12);
if exteriorsup(2,1)>0
hupabajo2 = diff(linspace(0,exteriorsup(2,1),30));
deltaupabajo2 = diff(inteupabajo2)./hupabajo2;
dupabajo2 = pchipslopes(hupabajo2,deltaupabajo2);
Dupabajo2 = sum((hupabajo2.^2).*(dupabajo2(2:end)-
dupabajo2(1:end-1))/12);
else
Dupabajo2=0;
end
momxupabajoH=momxupabajo-Dupabajo-Dupabajo2;
hlowarriba = diff(exteriorinf(2,end:-1:indi2));
deltalowarriba = diff(intelowarriba)./hlowarriba;
dlowarriba = pchipslopes(hlowarriba,deltalowarriba);
Dlowarriba = sum((hlowarriba.^2).*(dlowarriba(2:end)-
dlowarriba(1:end-1))/12);
if exteriorinf(2,end)<0 % el intrados tiene y negativas
hlowarriba2 = diff(linspace(0,exteriorinf(2,end),30));
deltalowarriba2 = diff(intelowarriba2)./hlowarriba2;
dlowarriba2 = pchipslopes(hlowarriba2,deltalowarriba2);
Dlowarriba2 = sum((hlowarriba2.^2).*(dlowarriba2(2:end)-
dlowarriba2(1:end-1))/12);
else
Dlowarriba2=0;
end
momxlowarribaH=momxlowarriba-Dlowarriba-Dlowarriba2;
hlowabajo = diff(exteriorinf(2,1:indi2));
deltalowabajo = diff(intelowabajo)./hlowabajo;
dlowabajo = pchipslopes(hlowabajo,deltalowabajo);
52. Dlowabajo = sum((hlowabajo.^2).*(dlowabajo(2:end)-dlowabajo(1:end-
1))/12);
if exteriorinf(2,1)<0
hlowabajo2 = diff(linspace(0,exteriorinf(2,1),30));
deltalowabajo2 = diff(intelowabajo2)./hlowabajo2;
dlowabajo2 = pchipslopes(hlowabajo2,deltalowabajo2);
Dlowabajo2 = sum((hlowabajo2.^2).*(dlowabajo2(2:end)-
dlowabajo2(1:end-1))/12);
else
Dlowabajo2=0;
end
momxlowabajoH=momxlowabajo-Dlowabajo-Dlowabajo2;
momxupH=momxuparribaH-momxupabajoH;
momxlowH=momxlowarribaH-momxlowabajoH;
momxHexte=momxupH-momxlowH; % esta es la buena
% UNA VEZ HECHO ESTO SOLO FALTA LAS ZONAS INTERIORES:
if (planosZ(j)>=0) & (planosZ(j)<=3)
% solo tenemos una zona interior, no hay webs.
% definimos variables:
% ZONA INTERIOR:
interiorsup(1,:)=xint(j,:) + xoffset(j)*cuerda(j); % añadimos
los offsets para calcular los momentos respecto sistema ejes q pasan
por el borde ataque del perfil.
interiorsup(2,:)=yextraint(j,:);
interiorinf(1,:)=xint(j,:) + xoffset(j)*cuerda(j);
interiorinf(2,:)=yintraint(j,:);
% CALCULO DE LOS MOMENTOS DE INERCIA:
% Sy:
% ZONA INTERIOR:
% utilizando solo la regla del trapecio:
integrandou=(interiorsup(1,:)).*interiorsup(2,:);
integrandol=(interiorinf(1,:)).*interiorinf(2,:);
momysup=sum(diff(interiorsup(1,:)).*(integrandou(1:end-
1)+integrandou(2:end))/2);
momyinf=sum(diff(interiorinf(1,:)).*(integrandol(1:end-
1)+integrandol(2:end))/2);
momyinte=momysup-momyinf;
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
hu = diff(interiorsup(1,:));
deltau = diff(integrandou)./hu;
du = pchipslopes(hu,deltau);
Dsup = sum((hu.^2).*(du(2:end)-du(1:end-1))/12);
momysupH=momysup-Dsup;
hl = diff(interiorinf(1,:));
deltal = diff(integrandol)./hl;
dl = pchipslopes(hl,deltal);
53. Dinf = sum((hl.^2).*(dl(2:end)-dl(1:end-1))/12);
momyinfH=momyinf-Dinf;
momyHinte=momysupH-momyinfH;
% Una vez analizadas todas las partes simplemente queda
restarlas:
momytotality=momyexte-momyinte;
momyHtotality=momyHexte-momyHinte;
Sy(j)=momyHtotality;% ponemos como resultado final el de
integracion con polinomio Hermite.
xg(j)=Sy(j)/areatot(j);
% Sx:
% ZONA INTERIOR:
[maxi,indi]=max(interiorsup(2,:));
[mini,indi2]=min(interiorinf(2,:));
% utilizando solo la regla del trapecio:
% extrados: (up es de extrados y arriba abajo corresponde a
los dos tramos
% de curva que se ven si se plotea (y^2)*x(y) frente a y, todo
de extrados).
inteuparriba=(interiorsup(2,end:-1:indi)).*interiorsup(1,end:-
1:indi); % invertimos los valores para integrar la funcion en el
sentido de las x positivas.
inteupabajo=(interiorsup(2,1:indi)).*interiorsup(1,1:indi);
momxuparriba=sum(diff(interiorsup(2,end:-
1:indi)).*(inteuparriba(1:end-1)+inteuparriba(2:end))/2);
momxupabajo=sum(diff(interiorsup(2,1:indi)).*(inteupabajo(1:end-
1)+inteupabajo(2:end))/2);
momxup=momxuparriba-momxupabajo;
% intrados: low es de intrados y arriba abajo corresponde a
los dos tramos
% de curva que se ven si se plotea (y^2)*x(y) frente a y, todo
de intrados).
intelowarriba=(interiorinf(2,end:-
1:indi2)).*interiorinf(1,end:-1:indi2); % invierto el sentido de la
curva superior para integrar en el sentido de las x negativas (y)
intelowabajo=(interiorinf(2,1:indi2)).*interiorinf(1,1:indi2);
momxlowarriba=sum(diff(interiorinf(2,end:-
1:indi2)).*(intelowarriba(1:end-1)+intelowarriba(2:end))/2);% las
areas tienen q salir negativas aqui.
momxlowabajo=sum(diff(interiorinf(2,1:indi2)).*(intelowabajo(1:end-
1)+intelowabajo(2:end))/2);
momxlow=momxlowarriba-momxlowabajo;
momxinte=momxup-momxlow; % lo q vale es restar no sumar (antes
lo habia sumado)
% esta es la que vale porque ambas partes, la positiva y
negativa añaden inercia
% si no, si la seccion fuera simetrica y las sumara, daria
inercia nula y
% eso esta mal.
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
54. huparriba = diff(interiorsup(2,end:-1:indi));
deltauparriba = diff(inteuparriba)./huparriba;
duparriba = pchipslopes(huparriba,deltauparriba);
Duparriba = sum((huparriba.^2).*(duparriba(2:end)-
duparriba(1:end-1))/12);
momxuparribaH=momxuparriba-Duparriba;
hupabajo = diff(interiorsup(2,1:indi));
deltaupabajo = diff(inteupabajo)./hupabajo;
dupabajo = pchipslopes(hupabajo,deltaupabajo);
Dupabajo = sum((hupabajo.^2).*(dupabajo(2:end)-dupabajo(1:end-
1))/12);
momxupabajoH=momxupabajo-Dupabajo;
hlowarriba = diff(interiorinf(2,end:-1:indi2));
deltalowarriba = diff(intelowarriba)./hlowarriba;
dlowarriba = pchipslopes(hlowarriba,deltalowarriba);
Dlowarriba = sum((hlowarriba.^2).*(dlowarriba(2:end)-
dlowarriba(1:end-1))/12);
momxlowarribaH=momxlowarriba-Dlowarriba;
hlowabajo = diff(interiorinf(2,1:indi2));
deltalowabajo = diff(intelowabajo)./hlowabajo;
dlowabajo = pchipslopes(hlowabajo,deltalowabajo);
Dlowabajo = sum((hlowabajo.^2).*(dlowabajo(2:end)-
dlowabajo(1:end-1))/12);
momxlowabajoH=momxlowabajo-Dlowabajo;
momxupH=momxuparribaH-momxupabajoH;
momxlowH=momxlowarribaH-momxlowabajoH;
momxHinte=momxupH-momxlowH; % esta es la buena
momxHtotality=momxHexte-momxHinte;
Sx(j)=momxHtotality; % ponemos como resultado final el de
integracion con polinomio Hermite.
yg(j)=Sx(j)/areatot(j);
else
k=k+1; % contador para la variable poscinicial y poscfinal.
if (tipo==1) | ((tipo==2)&(planosZ(j)>=6))
% Tenemos webs interiores, ahora hay q ver cuantas:
if (poscinicial(k)>=posweb11(j)) &
(poscfinal(k)<=posweb22(j))
% Solo tenemos una celda, la central.
% CELDA CENTRAL (2):
celdacensup(1,:)=xint(j,:) + xoffset(j)*cuerda(j);
celdacensup(2,:)=yextraint(j,:);
celdaceninf(1,:)=xint(j,:) + xoffset(j)*cuerda(j);
celdaceninf(2,:)=yintraint(j,:);
% Sy:
% utilizando solo la regla del trapecio:
55. integrandou=(celdacensup(1,:)).*celdacensup(2,:);
integrandol=(celdaceninf(1,:)).*celdaceninf(2,:);
momysup=sum(diff(celdacensup(1,:)).*(integrandou(1:end-
1)+integrandou(2:end))/2);
momyinf=sum(diff(celdaceninf(1,:)).*(integrandol(1:end-
1)+integrandol(2:end))/2);
momyceldacen=momysup-momyinf;
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
hu = diff(celdacensup(1,:));
deltau = diff(integrandou)./hu;
du = pchipslopes(hu,deltau);
Dsup = sum((hu.^2).*(du(2:end)-du(1:end-1))/12);
momysupH=momysup-Dsup;
hl = diff(celdaceninf(1,:));
deltal = diff(integrandol)./hl;
dl = pchipslopes(hl,deltal);
Dinf = sum((hl.^2).*(dl(2:end)-dl(1:end-1))/12);
momyinfH=momyinf-Dinf;
momyHceldacen=momysupH-momyinfH;
momyHtotality=momyHexte-momyHceldacen;
Sy(j)=momyHtotality; % ponemos como resultado final el
de integracion con polinomio Hermite.
xg(j)=Sy(j)/areatot(j);
% Sx:
% utilizando solo la regla del trapecio:
[maxim,in]=max(celdacensup(2,:));
integrandou1=(celdacensup(2,end:-
1:in)).*celdacensup(1,end:-1:in);
integrandou2=celdacensup(1,end)*(linspace(0,celdacensup(2,end),30)); %
esto es la funcion y*xmax
integrandou3=(celdacensup(2,1:in)).*celdacensup(1,1:in);
integrandou4=celdacensup(1,1)*(linspace(0,celdacensup(2,1),30)); %
esto es la funcion y*xmin
integrandol1=(celdaceninf(2,end:-
1:1)).*celdaceninf(1,end:-1:1);% hay q invertir el sentido
integrandol2=celdaceninf(1,end)*(linspace(0,celdaceninf(2,end),30)); %
esto es la funcion y*xmax
integrandol3=celdaceninf(1,1)*(linspace(0,celdaceninf(2,1),30)); %
esto es la funcion y*xmin
momxsup=sum(diff(celdacensup(2,end:-
1:in)).*(integrandou1(1:end-1)+integrandou1(2:end))/2)+...
sum(diff(linspace(0,celdacensup(2,end),30)).*(integrandou2(1:end-
1)+integrandou2(2:end))/2)-...
57. momxHtotality=momxHexte-momxHceldacen;
Sx(j)=momxHtotality; % ponemos como resultado final el
de integracion con polinomio Hermite.
yg(j)=Sx(j)/areatot(j);
% Reinicializamos las matrices usadas para q luego no
de
% problemas el programa al asignar otros datos, pues
si no
% se quedarian guardadas las dimensiones actuales de
% celdacensup y celdaceninf:
celdacensup=[];
celdaceninf=[];
elseif (poscinicial(k)<posweb11(j)) &
(poscfinal(k)<=posweb22(j))
% Tenemos celda izquierda y central, pero derecha no.
npuntos0=(3*pc-1)/2;
npuntos1=3*pc-npuntos0;
% CELDA IZQUIERDA:
celdaizqsup(1,:)=xint(j,1:npuntos0) +
xoffset(j)*cuerda(j);
celdaizqsup(2,:)=yextraint(j,1:npuntos0);
celdaizqinf(1,:)=xint(j,1:npuntos0) +
xoffset(j)*cuerda(j);
celdaizqinf(2,:)=yintraint(j,1:npuntos0);
% CELDA CENTRAL:
celdacensup(1,:)=xint(j,npuntos0+1:end) +
xoffset(j)*cuerda(j);
celdacensup(2,:)=yextraint(j,npuntos0+1:end);
celdaceninf(1,:)=xint(j,npuntos0+1:end) +
xoffset(j)*cuerda(j);
celdaceninf(2,:)=yintraint(j,npuntos0+1:end);
% Sy:
% CELDA IZQ:
% utilizando solo la regla del trapecio:
integrandou=(celdaizqsup(1,:)).*celdaizqsup(2,:);
integrandol=(celdaizqinf(1,:)).*celdaizqinf(2,:);
momysup=sum(diff(celdaizqsup(1,:)).*(integrandou(1:end-
1)+integrandou(2:end))/2);
momyinf=sum(diff(celdaizqinf(1,:)).*(integrandol(1:end-
1)+integrandol(2:end))/2);
momyceldaizq=momysup-momyinf;
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
hu = diff(celdaizqsup(1,:));
deltau = diff(integrandou)./hu;
du = pchipslopes(hu,deltau);
Dsup = sum((hu.^2).*(du(2:end)-du(1:end-1))/12);
momysupH=momysup-Dsup;
hl = diff(celdaizqinf(1,:));
deltal = diff(integrandol)./hl;
dl = pchipslopes(hl,deltal);
58. Dinf = sum((hl.^2).*(dl(2:end)-dl(1:end-1))/12);
momyinfH=momyinf-Dinf;
momyHceldaizq=momysupH-momyinfH;
% CELDA CENTRAL:
% utilizando solo la regla del trapecio:
integrandou=(celdacensup(1,:)).*celdacensup(2,:);
integrandol=(celdaceninf(1,:)).*celdaceninf(2,:);
momysup=sum(diff(celdacensup(1,:)).*(integrandou(1:end-
1)+integrandou(2:end))/2);
momyinf=sum(diff(celdaceninf(1,:)).*(integrandol(1:end-
1)+integrandol(2:end))/2);
momyceldacen=momysup-momyinf;
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
hu = diff(celdacensup(1,:));
deltau = diff(integrandou)./hu;
du = pchipslopes(hu,deltau);
Dsup = sum((hu.^2).*(du(2:end)-du(1:end-1))/12);
momysupH=momysup-Dsup;
hl = diff(celdaceninf(1,:));
deltal = diff(integrandol)./hl;
dl = pchipslopes(hl,deltal);
Dinf = sum((hl.^2).*(dl(2:end)-dl(1:end-1))/12);
momyinfH=momyinf-Dinf;
momyHceldacen=momysupH-momyinfH;
momyHtotality=momyHexte-momyHceldaizq-momyHceldacen;
Sy(j)=momyHtotality; % ponemos como resultado final el
de integracion con polinomio Hermite.
xg(j)=Sy(j)/areatot(j);
% Sx:
% CELDA IZQ:
% utilizando solo la regla del trapecio:
integrandou1=celdaizqsup(1,end)*(linspace(0,celdaizqsup(2,end),30)); %
esto es la funcion y*xmax
integrandou2=(celdaizqsup(2,:)).*celdaizqsup(1,:);
integrandol1=celdaizqinf(1,end)*(linspace(0,celdaizqinf(2,end),30)); %
esto es la funcion y*xmax
integrandol2=(celdaizqinf(2,:)).*celdaizqinf(1,:);
momxsup=sum(diff(linspace(0,celdaizqsup(2,end),30)).*(integrandou1(1:e
nd-1)+integrandou1(2:end))/2)-
sum(diff(celdaizqsup(2,:)).*(integrandou2(1:end-
1)+integrandou2(2:end))/2);
momxinf=sum(diff(linspace(0,celdaizqinf(2,end),30)).*(integrandol1(1:e
59. nd-1)+integrandol1(2:end))/2)-
sum(diff(celdaizqinf(2,:)).*(integrandol2(1:end-
1)+integrandol2(2:end))/2);
momxceldaizq=momxsup-momxinf;
% si añadimos el termino que se obtiene de integrar el
polinomio de
% Hermite:
% superior:
hu1 = diff(linspace(0,celdaizqsup(2,end),30));
deltau1 = diff(integrandou1)./hu1;
du1 = pchipslopes(hu1,deltau1);
Dsup1 = sum((hu1.^2).*(du1(2:end)-du1(1:end-1))/12);
hu2 = diff(celdaizqsup(2,:));
deltau2 = diff(integrandou2)./hu2;
du2 = pchipslopes(hu2,deltau2);
Dsup2 = sum((hu2.^2).*(du2(2:end)-du2(1:end-1))/12);
momxsupH=momxsup-Dsup1+Dsup2;
% inferior:
hl1 = diff(linspace(0,celdaizqinf(2,end),30));
deltal1 = diff(integrandol1)./hl1;
dl1 = pchipslopes(hl1,deltal1);
Dinf1 = sum((hl1.^2).*(dl1(2:end)-dl1(1:end-1))/12);
hl2 = diff(celdaizqinf(2,:));
deltal2 = diff(integrandol2)./hl2;
dl2 = pchipslopes(hl2,deltal2);
Dinf2 = sum((hl2.^2).*(dl2(2:end)-dl2(1:end-1))/12);
momxinfH=momxinf-Dinf1+Dinf2;
momxHceldaizq=momxsupH-momxinfH;
% CELDA CENTRAL:
% utilizando solo la regla del trapecio:
[maxim,in]=max(celdacensup(2,:));
integrandou1=(celdacensup(2,end:-
1:in)).*celdacensup(1,end:-1:in);
integrandou2=celdacensup(1,end)*(linspace(0,celdacensup(2,end),30)); %
esto es la funcion y*xmax
integrandou3=(celdacensup(2,1:in)).*celdacensup(1,1:in);
integrandou4=celdacensup(1,1)*(linspace(0,celdacensup(2,1),30)); %
esto es la funcion y*xmin
integrandol1=(celdaceninf(2,end:-
1:1)).*celdaceninf(1,end:-1:1);% hay q invertir el sentido
integrandol2=celdaceninf(1,end)*(linspace(0,celdaceninf(2,end),30)); %
esto es la funcion y*xmax
integrandol3=celdaceninf(1,1)*(linspace(0,celdaceninf(2,1),30)); %
esto es la funcion y*xmin