MME Construcción Programación de la barra axial dinámica

Ejercicio: programación del MEF para el problema dinámico de la
barra axial
1. MEF para la barra axial
En el examen se preguntarán cuestiones relacionadas con este programa.
Para avanzar en el tiempo se utilizará el método de Crank-Nicholson.
Para hacer el programa se puede aprovechar como base el programa correspondiente al
caso estático.
La barra tiene longitud 1. Supondremos que no hay amortiguamiento y que puede haber
aplicadas cargas puntuales. Suponiendo que sólo hay una carga puntual de magnitud 1
c
(t)
aplicada en el punto c por lo que el problema a resolver es:
(¹(r)1(r)n
0
(r, t))
0
+ )(r, t) + 1
c
(t)c
c
(r) = j(r)

n(r, t), r 2 [0, 1] , t 0
+ condiciones de frontera
n(r, 0) = n
0
(r)
_ n(r, 0) = _ n
0
(r)
donde las condiciones de frontera en cada extremo pueden ser de Dirichlet, de Neumann o de
Robin. De las condiciones de frontera se hablará más adelante.
2. Datos de entrada al programa
Todos los datos que no se de…nan mediante m-…les deben incluirse en un …chero denomi-
nado datbarraaxialdinam que se correrá antes de correr el programa principal mefbarraaxial-
dinam.
Datos geométricos y de mallado
malla: vector …la que contiene, ordenadas de menor a mayor, las coordenadas de los
extremos de los elementos
tipelem: vector columna con tantas componentes como elementos y en el que su compo-
nente i especi…ca el tipo del elemento i.
1 indica elemento lineal
2 indica elemento cuadrático (nudos equiespaciados)
3 indica elemento cubico de Lagrange (nudos equiespaciados)
Características de la barra
1
MME Construcción Programación de la barra axial dinámica
sección de la barra (puede depender de x). De…nida en un m-…le seccion.m
modulo de elasticidad (puede depender de x). De…nida en un m-…le llamado modelast.m
densidad (puede depender de x). De…nida en un m-…le llamado densidad.m
Cargas
fuerza distribuida: de…nida en un m-…le z=fuerzadistdin(x,t) (fuerza por unidad de lon-
gitud)
fuerza puntual: de…nida en un m-…le [xFk,Fk]=fpuntdinam(k,t) en el que xFk es la
coordenada x en la que se aplica fuerza k-ésima y Fk es su valor en el instante t. De
existir condiciones de Neumann (fuerzas en los extremos), éstas se considerarán como
un caso particular de fuerza puntual.
Tipo de condiciones de frontera: como en el caso estacionario, están de…nidos por la
matriz tipcondfr, de dimensiones 1 2 de forma que:
la componente 1,1:
vale ‘D’ si la condición en el extremo de la izquierda es de Dirichlet, es decir,
n(0, t) = n
0
(t).
vale ‘N’ si la condición en el extremo de la izquierda es de Neumann, es decir,
¹(0)1(0)n
0
(0, t) = 1
0
(t)
vale ‘R’ si la condición en el extremo de la izquierda es de Robin, es decir,
C
0
n(0, t) ¹(0)1(0)n
0
(0, t) = ,
0
(t),
donde C
0
es una constante positiva.
la componente 1,2:
vale ‘D’ si la condición en el extremo de la derecha es de Dirichlet, es decir,
n(1, t) = n
L
(t).
vale ‘N’ si la condición en el extremo de la derecha es de Neumann, es decir,
¹(1)1(1)n
0
(1, t) = 1
L
(t)
vale ‘R’ si la condición en el extremo de la derecha es de Robin, es decir,
C
L
n(1, t) + ¹(1)1(1)n
0
(1, t) = ,
L
(t),
donde C
L
es una constante positiva.
2
MME Construcción Programación de la barra axial dinámica
Valor de las condiciones de frontera. El valor de las condiciones de frontera en cada
extremo como función del tiempo se especi…ca de la siguiente forma:
condiciones de Neumann: van incluidas en el archivo fpuntdinam.m como caso particular
de fuerzas puntuales.
condiciones de Dirichlet: se de…nen en el m-…le: [desp,veloc,aceler]=condirichdinam(extremo,t)
Si extremo=0 es que se trata del extremo de la izquierda y si extremo=1 es que
se trata del extremo de la derecha.
desp (resp.veloc/aceler) es el valor del desplazamiento (resp. velocidad/aceleracion)
en el extremo correspondiente en el instante t, es decir, si se tratase del extremo
r = a, serían n(a, t),
@u
@t
(a, t) y
@
2
u
@t
2
(a, t) respectivamente.
condiciones de Robin: se de…nen en el m-…le: [C,beta]=condrobindinam(extremo,t)
Si extremo=0 es que se trata del extremo de la izquierda y si extremo=1 es que
se trata del extremo de la derecha.
C es el valor de C
0
(o C
L
) y beta es el valor de ,
0
(o ,
L
) en el instante t. Por
ejemplo, en el caso de extremo=0 tendríamos C = C
0
y /cta = ,
0
(t).
Condiciones iniciales
desplazamiento inicial (puede depender de x). De…nido en un m-…le despinicial.m.
velocidad inicial (puede depender de x). De…nida en un m-…le velocinicial.m.
Otras entradas
valor de tiempo hasta el que se quiere calcular: T.
paso de tiempo para el que se efectuarán los cálculos: h.
vector …la xsalidas que corresponde a los puntos en los que se quiere evaluar el desplaza-
miento y la tension.
En todos los elementos se utiliza el mismo tipo de integración, que queda de…nido por
el vector tipintegr, que es un vector con dos componentes que tiene el mismo signi…cado
que en el caso estático.
Si la primera componente es 0 indica que se utilizara integración gaussiana. La
segunda componente indica el numero de nudos
Si la primera componente es 1 indica que se utilizara regla del trapecio extendida.
La segunda componente indica el numero de nudos
Si la primera componente es 2 indica que se utilizara regla de Simpson extendida.
La segunda componente indica el numero de nudos
3
MME Construcción Programación de la barra axial dinámica
3. Funciones auxiliares
En el programa habrá que hacer uso de las siguiente funciones, de las que se ya se dispone
del caso estacionario:
[funbase,derfunbase]=funbase1d(psi,a)
e=busq(malla,z)
4. Salidas
Las salidas del programa son:
tdiscreto: es un vector …la [0, t
1
, t
2
, ..., t
q
] donde t
j
= /, y ¡ es el número de pasos de
tiempo que se dan.
unud: es una matriz de dimensiones : ¡ donde : es el número total de nudos. La
columna , + 1 de unud contiene los desplazamientos en los nudos en el instante t
j
, es
decir
n:nd =

d
0
j

d
1
j j

d
q

velnud: es una matriz de dimensiones : ¡ donde : es el número total de nudos. La
columna , +1 de velnud contiene las velocidades en los nudos en el instante t
j
, es decir
velnud =
h
_
d
0
j
_
d
1
j j
_
d
q
i
acelnud: es una matriz de dimensiones : ¡ donde : es el número total de nudos.
La columna , + 1 de acelnud contiene las aceleraciones en los nudos en el instante t
j
.
Conocidos los desplazamientos en los nudos, las aceleraciones se pueden calcular a partir
de
'

d + 1d = 1
uxsalidas: es una matriz j ¡ donde j es la dimension de xsalidas. La columna , + 1
contiene los desplazamientos en los ptos de xsalidas en el instante t
j
.
velxsalidas: es una matriz j ¡ donde j es la dimension de xsalidas. La columna , + 1
contiene las velocidades en los ptos de xsalidas en el instante t
j
.
acelxsalidas: es una matriz j ¡ donde j es la dimension de xsalidas. La columna , +1
contiene las aceleraciones en los ptos de xsalidas en el instante t
j
.
tensxsalidas: es una matriz j ¡ donde j es la dimension de xsalidas. La columna , +1
contiene la tension en los ptos de xsalidas en el instante t
j
.
4
MME Construcción Programación de la barra axial dinámica
5. Esquema del programa
El siguiente esquema está pensado para el caso en que ni la matriz de masas ni la de
rigidez dependen del tiempo.
Cálculo de

',

1,

1
0
y
_
1
0
mediante un bucle sobre los elementos:
for c = 1 : :
for i = 1 : :
e
- Calcular j
e0
i
y ensamblar en

1
0
- Calcular j
e0
i
y ensamblar en
_
1
0
for , = 1 : :
e
- Calcular /
e
ij
(salvo contribución de las condiciones de Robin) y ensamblar en

1
- Calcular :
e
ij
y ensamblar en

'
end (j)
end (i)
end (e)
Incorporación a

1 de la contribucion de las condiciones de Robin.
Obtención de ', 1, 1
0
y
_
1
0
a partir de sus homólogos ampliados.
Obtención de d
0
y
_
d
0
resolviendo 'd
0
= 1
0
y '
_
d
0
=
_
1
0
.
Factorización de Cholesky de la matriz 1 := ' +
h
2
4
1.
Inicialización del tiempo: t
0
= 0
Bucle para calcular los 1
j
en todos los instantes de tiempo
for | = 0 : ¡ (| es el índice del paso de tiempo)
for c = 1 : :
for i = 1 : :
e
- cálculo de (), ·
i
)
e
en el instante t
l1
y ensamblaje en

1(t
l1
)
end (i)
end (e)
- Incorporación a

1(t
l
) de las condiciones de frontera naturales, de las fuerzas pun-
tuales y de las condiciones de Robin.
- Obtención de 1
l
:= 1(t
l
) a partir de

1(t
l
).
- Guardar 1(t
l
) en una matriz 1acn:.
- Actualización del tiempo: t
l+1
= t
l
+ /.
end (|)
5
MME Construcción Programación de la barra axial dinámica
Al …nal de este bucle se dispone de
1acn: = [1(0) j 1(t
1
) j 1(t
2
) j j 1(t
q
)]
Nótese que 1(t
j
) se almacena en la columna , + 1 de 1acn:.
Bucle para calcular d
j
y
_
d
j
en todos los instantes de tiempo aplicando Crank-Nicholson:
for | = 1 : ¡
- Obtener
_
d
l+1
resolviendo

' +
/
2
4
1

_
d
l+1
= /1d
l
+

'
/
2
4
1

_
d
l
+
/
2

1
l+1
+ 1
l

- Obtener d
l+1
de
d
l+1
= d
l
+
/
2
_
d
l
+
/
2
_
d
l+1
- Ampliación de d
l+1
y de
_
d
l+1
con los desplazamientos y las velocidades en los
nudos esenciales para tener

d
l+1
y
_
d
l+1
. Guardar en unudos y velnudos.
end (|)
Postprocesado. Cálculo de los desplazamientos uxsalidas, las velocidades velxsalidas y
las tensiones tensxsalidasen los puntos de xsalidas.
Sacar unud, velnud, uxsalidas, velxsalidas y tensxsalidas por pantalla.
Comentario: los sistemas lineales se deben resolver minimizando el número de operaciones
a realizar.
6
MME Construcción Programación de la barra axial dinámica
6. Esquema alternativo
Una variación repecto del esquema anterior es llevar a cabo todas las operaciones rela-
cionadas con el avance en el tiempo en un sólo bucle, en vez de en dos. Así tendríamos que
la parte del esquema anterior relativa a avanzar en el tiempo se sustituiría por esta otra:
Inicialización del tiempo: t
0
= 0
Bucle para avanzar en el tiempo:
while t
l
< T
- Actualización del tiempo: t
l
= t
l1
+ /
for c = 1 : :
for i = 1 : :
e
- Cálculo de (), ·
i
)
e
en el instante t
l
y ensamblaje en

1(t
l
)
end (i)
end (e)
- Incorporación a

1(t
l
) de las condiciones de frontera naturales, de las fuerzas pun-
tuales y de las condiciones de Robin.
- Obtención de 1
l
:= 1(t
l
) a partir de

1(t
l
).
- Aplicación de Crank-Nicholson para avanzar en el tiempo:
- Obtener
_
d
l+1
resolviendo

' +
/
2
4
1

_
d
l+1
= /1d
l
+

'
/
2
4
1

_
d
l
+
/
2

1
l+1
+ 1
l

- Obtener d
l+1
de
d
l+1
= d
l
+
/
2
_
d
l
+
/
2
_
d
l+1
- Ampliación de d
l+1
y de
_
d
l+1
con los desplazamientos y las velocidades en los
nudos esenciales para tener

d
l+1
y
_
d
l+1
. Guardar en unudos y velnudos.
end (del while)
Comentario: El bucle anterior también se puede hacer con un bucle “for” sobre el número
¡ de pasos de tiempo.
7

De existir condiciones de Neumann (fuerzas en los extremos). t) + A(L)E(L)u0 (L. Tipo de condiciones de frontera: como en el caso estacionario.m modulo de elasticidad (puede depender de x). donde C0 es una constante positiva. están de…nidos por la matriz tipcondfr. CL u(L. De…nida en un m-…le llamado densidad.t) en el que xFk es la coordenada x en la que se aplica fuerza k-ésima y Fk es su valor en el instante t. es decir. éstas se considerarán como un caso particular de fuerza puntual. t) = 0 (t). u(0. t) = u0 (t): vale ‘ N’si la condición en el extremo de la izquierda es de Neumann. De…nida en un m-…le seccion. t) = FL (t) vale ‘ R’si la condición en el extremo de la derecha es de Robin.2: vale ‘ D’si la condición en el extremo de la derecha es de Dirichlet. A(L)E(L)u0 (L. De…nida en un m-…le llamado modelast. .1: vale ‘ D’si la condición en el extremo de la izquierda es de Dirichlet. es decir. de dimensiones 1 2 de forma que: la componente 1.MME Construcción Programación de la barra axial dinámica sección de la barra (puede depender de x). C0 u(0.m densidad (puede depender de x). es decir. la componente 1.m Cargas fuerza distribuida: de…nida en un m-…le z=fuerzadistdin(x. 2 L (t). t) A(0)E(0)u0 (0. A(0)E(0)u0 (0. t) = F0 (t) vale ‘ R’si la condición en el extremo de la izquierda es de Robin. t) = uL (t): vale ‘ N’si la condición en el extremo de la derecha es de Neumann. u(L.Fk]=fpuntdinam(k. t) = donde CL es una constante positiva. es decir.t) (fuerza por unidad de longitud) fuerza puntual: de…nida en un m-…le [xFk. es decir. es decir.

Si la primera componente es 0 indica que se utilizara integración gaussiana. que es un vector con dos componentes que tiene el mismo signi…cado que en el caso estático. es decir.beta]=condrobindinam(extremo. Otras entradas valor de tiempo hasta el que se quiere calcular: T.MME Construcción Programación de la barra axial dinámica Valor de las condiciones de frontera. Por ejemplo. serían u(a. Condiciones iniciales desplazamiento inicial (puede depender de x). C es el valor de C0 (o CL ) y beta es el valor de 0 (o L ) en el instante t. paso de tiempo para el que se efectuarán los cálculos: h. De…nido en un m-…le despinicial. desp (resp.t) Si extremo=0 es que se trata del extremo de la izquierda y si extremo=1 es que se trata del extremo de la derecha. t) y @ 2 (a. condiciones de Dirichlet: se de…nen en el m-…le: [desp.m. La segunda componente indica el numero de nudos Si la primera componente es 1 indica que se utilizara regla del trapecio extendida. vector …la xsalidas que corresponde a los puntos en los que se quiere evaluar el desplazamiento y la tension. t) respectivamente. De…nida en un m-…le velocinicial. @u (a.m como caso particular de fuerzas puntuales. en el caso de extremo=0 tendríamos C = C0 y beta = 0 (t). si se tratase del extremo 2u x = a. El valor de las condiciones de frontera en cada extremo como función del tiempo se especi…ca de la siguiente forma: condiciones de Neumann: van incluidas en el archivo fpuntdinam. velocidad inicial (puede depender de x).m.t) Si extremo=0 es que se trata del extremo de la izquierda y si extremo=1 es que se trata del extremo de la derecha. En todos los elementos se utiliza el mismo tipo de integración. La segunda componente indica el numero de nudos Si la primera componente es 2 indica que se utilizara regla de Simpson extendida.veloc. La segunda componente indica el numero de nudos 3 . @t @t condiciones de Robin: se de…nen en el m-…le: [C.veloc/aceler ) es el valor del desplazamiento (resp. que queda de…nido por el vector tipintegr. t).aceler]=condirichdinam(extremo. velocidad/aceleracion) en el extremo correspondiente en el instante t.

es decir unud = d0 j d1 j j dq velnud: es una matriz de dimensiones n q donde n es el número total de nudos.z) 4.MME Construcción Programación de la barra axial dinámica 3. unud: es una matriz de dimensiones n q donde n es el número total de nudos. La columna j + 1 contiene los desplazamientos en los ptos de xsalidas en el instante tj . La columna j + 1 contiene las velocidades en los ptos de xsalidas en el instante tj . :::. 4 . t2 . acelxsalidas: es una matriz p q donde p es la dimension de xsalidas. t1 .derfunbase]=funbase1d(psi. velxsalidas: es una matriz p q donde p es la dimension de xsalidas. Salidas Las salidas del programa son: tdiscreto: es un vector …la [0.a) e=busq(malla. las aceleraciones se pueden calcular a partir de M d + Kd = F uxsalidas: es una matriz p q donde p es la dimension de xsalidas. La columna j + 1 de acelnud contiene las aceleraciones en los nudos en el instante tj . tensxsalidas: es una matriz p q donde p es la dimension de xsalidas. La columna j + 1 de velnud contiene las velocidades en los nudos en el instante tj . Conocidos los desplazamientos en los nudos. La columna j + 1 de unud contiene los desplazamientos en los nudos en el instante tj . La columna j + 1 contiene las aceleraciones en los ptos de xsalidas en el instante tj . La columna j + 1 contiene la tension en los ptos de xsalidas en el instante tj . Funciones auxiliares En el programa habrá que hacer uso de las siguiente funciones. es decir h i _ _ _ velnud = d0 j d1 j j dq acelnud: es una matriz de dimensiones n q donde n es el número total de nudos. tq ] donde tj = hj y q es el número de pasos de tiempo que se dan. de las que se ya se dispone del caso estacionario: [funbase.

Factorización de Cholesky de la matriz B := M + Inicialización del tiempo: t0 = 0 Bucle para calcular los F j en todos los instantes de tiempo for l = 0 : q (l es el índice del paso de tiempo) for e = 1 : s for i = 1 : ne . _ Obtención de M . _ Cálculo de M .Calcular y e0 y ensamblar en Y 0 i for j = 1 : ne e .Calcular me y ensamblar en M ij end (j) end (i) end (e) Incorporación a K de la contribucion de las condiciones de Robin. Ni ) e en el instante tl 1 y ensamblaje en F (tl 1 ) end (i) end (e) . Y 0 y Y 0 mediante un bucle sobre los elementos: for e = 1 : s for i = 1 : ne e0 .Calcular yi y ensamblar en Y 0 _ . . 5 . de las fuerzas puntuales y de las condiciones de Robin. end (l) h2 4 K. _ _ _ Obtención de d0 y d0 resolviendo M d0 = Y 0 y M d0 = Y 0 .Incorporación a F (tl ) de las condiciones de frontera naturales. Esquema del programa El siguiente esquema está pensado para el caso en que ni la matriz de masas ni la de rigidez dependen del tiempo.Actualización del tiempo: tl+1 = tl + h.Obtención de F l := F (tl ) a partir de F (tl ): . K.Guardar F (tl ) en una matriz F acum: .Calcular kij (salvo contribución de las condiciones de Robin) y ensamblar en K . Y 0 y Y 0 a partir de sus homólogos ampliados.cálculo de (f. K.MME Construcción Programación de la barra axial dinámica 5.

_ Bucle para calcular dj y dj en todos los instantes de tiempo aplicando Crank-Nicholson: for l = 1 : q _ . Guardar en unudos y velnudos.Obtener dl+1 de dl+1 = dl + h _l h _l+1 d + d 2 2 _ . 6 . Cálculo de los desplazamientos uxsalidas.Ampliación de dl+1 y de dl+1 con los desplazamientos y las velocidades en los _ nudos esenciales para tener dl+1 y dl+1 .MME Construcción Programación de la barra axial dinámica Al …nal de este bucle se dispone de F acum = [F (0) j F (t1 ) j F (t2 ) j j F (tq )] Nótese que F (tj ) se almacena en la columna j + 1 de F acum. end (l) Postprocesado. uxsalidas. velnud. velxsalidas y tensxsalidas por pantalla.Obtener dl+1 resolviendo M+ h2 _ K dl+1 = 4 hKdl + M h2 h _ K dl + F l+1 + F l 4 2 . Sacar unud. Comentario: los sistemas lineales se deben resolver minimizando el número de operaciones a realizar. las velocidades velxsalidas y las tensiones tensxsalidasen los puntos de xsalidas.

Así tendríamos que la parte del esquema anterior relativa a avanzar en el tiempo se sustituiría por esta otra: Inicialización del tiempo: t0 = 0 Bucle para avanzar en el tiempo: while tl < T . de las fuerzas puntuales y de las condiciones de Robin.Aplicación de Crank-Nicholson para avanzar en el tiempo: _ . end (del while) Comentario: El bucle anterior también se puede hacer con un bucle “for”sobre el número q de pasos de tiempo. .Obtener dl+1 de dl+1 = dl + h _l h _l+1 d + d 2 2 _ . 7 .Obtener dl+1 resolviendo M+ h2 _ K dl+1 = 4 hKdl + M h2 h _ K dl + F l+1 + F l 4 2 . Guardar en unudos y velnudos. en vez de en dos. .Ampliación de dl+1 y de dl+1 con los desplazamientos y las velocidades en los _ nudos esenciales para tener dl+1 y dl+1 . Ni ) e en el instante tl y ensamblaje en F (tl ) end (i) end (e) .MME Construcción Programación de la barra axial dinámica 6.Incorporación a F (tl ) de las condiciones de frontera naturales.Actualización del tiempo: tl = tl 1 + h for e = 1 : s for i = 1 : ne .Cálculo de (f. Esquema alternativo Una variación repecto del esquema anterior es llevar a cabo todas las operaciones relacionadas con el avance en el tiempo en un sólo bucle.Obtención de F l := F (tl ) a partir de F (tl ).