76
MEF 1D 1 / 76 MEF 1D Rafael Ramírez Ros Clases MN-P05 & MN-P06

MEF 1D - web.mat.upc.edu

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: MEF 1D - web.mat.upc.edu

MEF 1D 1 / 76

MEF 1D

Rafael Ramírez Ros

Clases MN-P05 & MN-P06

Page 2: MEF 1D - web.mat.upc.edu

MEF 1D 2 / 76

Contenidos

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 3: MEF 1D - web.mat.upc.edu

MEF 1D 3 / 76

Problemas

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 4: MEF 1D - web.mat.upc.edu

MEF 1D 4 / 76

Problemas

PVFs lineales 1D

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 5: MEF 1D - web.mat.upc.edu

MEF 1D 5 / 76

Problemas

PVFs lineales 1D

Ecuación modelo 1D

Consideramos la ecuación modelo 1D

− ddx

(a1(x)

dudx

)+ a0(x)u(x) = f (x), x ∈ [a,b],

donde:a1(x), a0(x) y f (x) son tres coeficientes conocidos quedefinen esta EDO lineal de 2o orden;u = u(x) es la función incógnita; y[a,b] es el intervalo donde queremos aproximar la solución.

Importante: Este tipo de ecuaciones tienen infinitassoluciones —suponiendo que las funciones a1(x), a0(x) yf (x) son funciones “regulares” en el intervalo [a,b].

Page 6: MEF 1D - web.mat.upc.edu

MEF 1D 6 / 76

Problemas

PVFs lineales 1D

PVFs & CFs

Para determinar una solución entre las infinitas existentes,fijamos dos condiciones de frontera (CFs) adicionales:

La 1a en el extremo x = a; yLa 2a en el extremo x = b.

Consideramos dos tipos de CFs:Esenciales: Consisten en fijar el valor de u(x); oNaturales: Consisten en fijar el valor de u′(x).

El problema formado por la ecuación modelo más las dosCFs, se llama problema de valor en la frontera (PVF).

Ejemplo de PVF:

[EDO] −u′′ + u = f (x) x ∈ [0,1][1a CF] u(0) = 2[2a CF] u′(1) = −1

Page 7: MEF 1D - web.mat.upc.edu

MEF 1D 7 / 76

Problemas

PVFs lineales 1D

Terminologías equivalentes

En las dos últimas semanas de la asignatura EcuacionesDiferenciales (EDs) veréis cómo resolver algunos de estosPVFs con lápiz y papel. La terminología allí usada es diferente:

Objeto Terminología MNs Terminología EDsu = u(x) variable primaria función incógnitaf = f (x) “fuerza” interna término no homogéneo

u(a) = α0u(b) = β0

CFs esenciales CFs de tipo Dirichlet

u′(a) = α1u′(b) = β1

CFs naturales CFs de tipo Neumann

Page 8: MEF 1D - web.mat.upc.edu

MEF 1D 8 / 76

Problemas

PVFs lineales 1D

Objetivos

Sea uexa(x) la solución exacta del PVF.Sea a = x1 < x2 < · · · < xN < xN+1 = b una partición delintervalo [a,b] con N + 1 nodos y N subintervalos.Usualmente, trabajamos con particiones uniformes:

xi+1 − xi = h = (b − a)/N, ∀i = 1, . . . ,N.

Objetivos.-1 Aproximar la solución exacta en los nodos:

uexa(xi ) ≈ ui , i = 1, . . . ,N + 1.

2 Aproximar la solución exacta en todo el intervalo:

uexa(x) ≈ uapr(x), x ∈ [a,b],

donde la solución aproximada uapr(x) es una interpolaciónde los anteriores valores ui . Es decir, uapr(xi ) = ui .

Page 9: MEF 1D - web.mat.upc.edu

MEF 1D 9 / 76

Problemas

PVFs lineales 1D

Cuantificación del error (en un punto)

Si conocemos la solución exacta uexa(x) del PVF, hay dosformas de cuantificar el error cometido al realizar laaproximación uexa(x) ≈ uapr(x):

1 Calcular el error absoluto

εabs(x) = |uexa(x)− uapr(x)|;

2 Calcular el error relativo

εrel(x) =

∣∣∣∣uexa(x)− uapr(x)

uexa(x)

∣∣∣∣ .Advertencia: El error en los nodos puede ser no nulo.

Page 10: MEF 1D - web.mat.upc.edu

MEF 1D 10 / 76

Problemas

PVFs lineales 1D

Cuantificación del error (en varios puntos)

El error absoluto εabs(x) = |uexa(x)− uapr(x)| se puede“medir” de varias formas en un conjunto de L + 1 puntos

x = x1, . . . , xL+1 ⊂ [a,b].

Podemos calcular:El valor máximo de εabs(x) en x :

Emax(x) = max1≤i≤L+1εabs(xi )

;

El valor promedio de εabs(x) en x :

Emean(x) =1

L + 1

L+1∑i=1

εabs(xi );

Dado un exponente p > 0, la norma-p de εabs(x) en x :

‖εabs‖p,x =p√∑L+1

i=1

(εabs(xi )

)p.

Page 11: MEF 1D - web.mat.upc.edu

MEF 1D 11 / 76

Problemas

PVFs lineales 1D

Método de elementos finitos (MEF)

Consiste en resolver SLs de la forma Ku = F + Q, dondeK =

(Kij)

1≤i,j≤N+1 = matriz de rigidez global (es simétrica);

u =

u1...

uN+1

= vector de variables primarias global;

F =

F1...

FN+1

= vector de fuerzas internas global;

Q =

Q1...

QN+1

= vector de variables secundarias global.

K y F se obtienen ensamblando objetos locales.Q se obtiene a partir de las CFs y otras consideraciones.

Page 12: MEF 1D - web.mat.upc.edu

MEF 1D 12 / 76

Problemas

PVFs lineales 1D

Objetos locales: Elem. lineales & coef. constantes

Sea Ωe un elemento lineal de longitud he.Sean ai(x) ≡ ae

i y f (x) ≡ f e constantes en el elemento Ωe.La matriz de rigidez local del elemento Ωe es

K e =ae

1he

(1 −1−1 1

)+

ae0he

6

(2 11 2

).

El vector de fuerzas internas local del elemento Ωe es

F e =f ehe

2

(11

).

Si realizamos una partición en N elementos de la mismalongitud, entonces he ≡ (b − a)/N para todo e = 1, . . . ,N.

Page 13: MEF 1D - web.mat.upc.edu

MEF 1D 13 / 76

Problemas

PVFs lineales 1D

Objetos locales: Elem. cuadráticos & coef. constantes

Sea Ωe un elemento cuadrático de longitud he.Sean ai(x) ≡ ae

i y f (x) ≡ f e constantes en el elemento Ωe.La matriz de rigidez local del elemento Ωe es

K e =ae

13he

7 −8 1−8 16 −8

1 −8 7

+ae

0he

30

4 2 −12 16 2−1 2 4

.

El vector de fuerzas internas local del elemento Ωe es

F e =f ehe

6

141

.

Si consideramos N elementos de la misma longitud,entonces he ≡ (b − a)/N para todo e = 1, . . . ,N.

Page 14: MEF 1D - web.mat.upc.edu

MEF 1D 14 / 76

Problemas

PVFs lineales 1D

Objetos locales: Elem. lineal & coef. a1 lineal

Sea Ωe un elemento de longitud he.Sea a1(x) = ae

10 + ae11x un coeficiente lineal en Ωe.

Sea a0(x) ≡ ae0 un coeficiente constante en Ωe.

Si el elemento Ωe = [xe, xe+1] es lineal, entonces

K e = K e,1 + K e,0,

K e,1 =

(ae

10he

+ae

11(xe + xe+1)

2he

)(1 −1−1 1

),

K e,0 =ae

0he

6

(2 11 2

).

Page 15: MEF 1D - web.mat.upc.edu

MEF 1D 15 / 76

Problemas

PVFs lineales 1D

Objetos locales: Elem. lineal & coef. a1 polinomial

Sea Ωe un elemento de longitud he.Sea a1(x) =

∑Nn=0 ae

1nxn un coeficiente polinomial en Ωe.Sea a0(x) ≡ ae

0 un coeficiente constante en Ωe.Si el elemento Ωe = [xe, xe+1] es lineal, entonces

K e = K e,1 + K e,0,

K e,1 =(∑N

n=0 αe1n

)( 1 −1−1 1

),

K e,0 =ae

0he

6

(2 11 2

),

donde αe1n =

ae1n

(n+1)h2e

(xn+1

e+1 − xn+1e

).

Nota: αe10 = ae

10/he y αe11 = ae

11(xe + xe+1)/2he.

Page 16: MEF 1D - web.mat.upc.edu

MEF 1D 16 / 76

Problemas

PVFs lineales 1D

Objetos locales: Fuerza interna lineal

Sea Ωe un elemento de longitud he.Sea f (x) = f e

0 + f e1 x una fuerza interna lineal en Ωe.

Si el elemento Ωe = [xe, xe+1] es lineal, entonces

F e =f e0 he

2

(11

)+

f e1 he

6

(2xe + xe+1xe + 2xe+1

).

Si el elemento Ωe es cuadrático, entonces

F e =f e0 he

6

141

+f e1 he

6

x2e−14x2e

x2e+1

,

donde x2e−1, x2e, x2e+1 son los tres nodos del elemento Ωe.

Page 17: MEF 1D - web.mat.upc.edu

MEF 1D 17 / 76

Problemas

PVFs lineales 1D

El vector de variables secundarias global

Casi todas sus componentes son iguales a cero.Excepciones típicas son las componentes asociadas anodos donde se fijan CFs naturales. Concretamente:

Si el primer nodo es el extremo izquierdo x = a, entonces:

u′(a) = α1 ⇒ Q1 = −a1(a)u′(a) = −a1(a)α1;

Si el último nodo es el extremo derecho x = b, entonces

u′(b) = β1 ⇒ QN+1 = +a1(b)u′(b) = +a1(b)β1.

Otras excepciones aparecen al estudiar problemas deelasticidad lineal 1D.

Page 18: MEF 1D - web.mat.upc.edu

MEF 1D 18 / 76

Problemas

Elasticidad lineal 1D

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 19: MEF 1D - web.mat.upc.edu

MEF 1D 19 / 76

Problemas

Elasticidad lineal 1D

Ecuación

La elasticidad lineal 1D se modela con la ecuación

− ddx

(E(x)A(x)

dudx

)= f (x), x ∈ [a,b],

donde:E(x) = módulo de Young [unidades S.I.: Pa = N/m2];A(x) = área seccional [unidades S.I.: m2];u(x) = desplazamiento [unidades S.I.: m];f (x) = fuerza interna (peso de la columna) [unidades S.I.: N/m];x ∈ [a,b] determina un punto de la columna [unidades S.I.: m];L = b − a = longitud de la columna [unidades S.I.: m].

Page 20: MEF 1D - web.mat.upc.edu

MEF 1D 20 / 76

Problemas

Elasticidad lineal 1D

Observaciones

Correspondencia con la ecuación modelo:

a1(x) = E(x)A(x), a0(x) ≡ 0.

La columna es homogénea cuando a1(x) es constante.Es necesario expresar todas las cantidades físicas enunidades compatibles (usualmente, unidades del S.I.).

Page 21: MEF 1D - web.mat.upc.edu

MEF 1D 21 / 76

Problemas

Elasticidad lineal 1D

Pre-proceso y post-proceso sobre nodos

Si en el nodo i actúa una fuerza/peso de magnitud P ysentido negativo (hacia abajo), entonces Qi = −P.Diremos que el nodo i es:

Fijo, cuando ui es un dato del problema (CF esencial), encuyo caso Qi es una incógnita del sistema global;Variable, de lo contrario.

Nodo i fijo⇒ Qi es la fuerza de reacción en ese nodo.Nodo i variable⇒ Fuerza de reacción nula en ese nodo.

Page 22: MEF 1D - web.mat.upc.edu

MEF 1D 22 / 76

Problemas

Elasticidad lineal 1D

Post-proceso sobre elementos

La elongación de un elemento Ωe es la diferencia dedesplazamientos en sus dos extremos.La elongación cuantifica el cambio de longitud de Ωe bajola acción de las fuerzas internas y externas.Si E(x) ≡ Ee y A(x) ≡ Ae son constantes en Ωe:

La fuerza sobre Ωe es

Ee × Ae × elongación[Ωe]longitud[Ωe]

.

La tensión sobre Ωe es

fuerza[Ωe]Ae .

Page 23: MEF 1D - web.mat.upc.edu

MEF 1D 23 / 76

Repositorio oficial

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 24: MEF 1D - web.mat.upc.edu

MEF 1D 24 / 76

Repositorio oficial

Función plotElements

1 function plotElements(nodes, elem, numbering)

donde:nodes (array nNodes x ndim) = coordenadas de cadanodo del mallado, escritas por filas;elem (array nElem x nVert) = índices de los vérticesde cada elemento del mallado, escritos por filas;

numbering =

1, para numerar nodos y elementos0, en caso contrario

Nota: En este documento estudiamos problemas 1D: ndim=1y trabajamos con elementos lineales: nVert=2 o cuadráticos:nVert=3.

Page 25: MEF 1D - web.mat.upc.edu

MEF 1D 25 / 76

Comandos específicos

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 26: MEF 1D - web.mat.upc.edu

MEF 1D 26 / 76

Comandos específicos

Resolver un sistema lineal

Sea K un array n x n.Sea Q un array n x 1.Para encontrar un array n x 1 que sea una solución delsistema lineal K*u = Q, usamos el operador \:

1 u = K\Q;

Observaciones:1 Los arrays Q y u son vectores columna.2 Si el sistema lineal es compatible indeterminado, el

operador \ solo encuentra una solución.3 Si el sistema lineal es incompatible, el operador \ no avisa

y devuelve un vector que no es solución.

Page 27: MEF 1D - web.mat.upc.edu

MEF 1D 27 / 76

Comandos específicos

Definir la matriz de conectividad elem

Usualmente solo consideramos dos tipos de elementos 1D:Lineales, en cuyo caso nNodes=nElem+1 y

1 elem = zeros(nElem,2); %Space for the connectivity matrix2 for e=1:nElem %Run over all elements3 %Element e connects nodes e and e+14 elem(e,:) = [e, e+1];5 end

Cuadráticos, en cuyo caso nNodes=2*nElem+1 essiempre impar y

1 elem = zeros(nElem,3); %Space for the connectivity matrix2 for e=1:nElem %Run over all elements3 %Element e conects nodes 2*e-1, 2*e and 2*e+14 elem(e,:) = [2*e-1, 2*e, 2*e+1];5 end

Page 28: MEF 1D - web.mat.upc.edu

MEF 1D 28 / 76

Comandos específicos

Ensamblar los objetos globales K y F

1 K = zeros(nNodes); %Space for the global stiff matrix2 F = zeros(nNodes,1); %Space for global internal forces vector3 for e=1:nElem %Run over all elements4 Ke = ???; %Computation of the local stiff matrix5 Fe = ???; %Computation of the local internal forces6 rows = elem(e,:); %Nodes of element e7 colums = rows;8 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K9 F(rows) = F(rows) + Fe; %Assembly of F

10 end

Optimización: Si estudiamos un problema donde todos lasmatrices de rigidez locales (respectivamente, todos losvectores de fuerzas internas locales) son iguales, situamos elcálculo de Ke (respectivamente, Fe) antes del bucle paradisminuir el tiempo de cómputo.

Page 29: MEF 1D - web.mat.upc.edu

MEF 1D 29 / 76

Cuestiones

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 30: MEF 1D - web.mat.upc.edu

MEF 1D 30 / 76

Cuestiones

1 [Opcional] Crea una función para generar de formaautomática mallados uniformes 1D con elementos linealeso cuadráticos. Es decir, crea una función

1 function [nodes,elem]=mesh1D(interv,nElem,isLinear)

donde:interv (array 1x2) = extremos del intervalo [a,b];nElem = number of elements;

isLinear =

1, si queremos elementos lineales0, si queremos elementos cuadráticos

nodes (array nNodes x 1) = coordenada de cada nododel mallado, en el orden natural;elem (array nElem x nVert) = índices de los vértices decada elemento del mallado, escritos por filas.

Nota: Si trabajamos con elementos lineales, nVert=2. Sitrabajamos con cuadráticos, nVert=3.

Page 31: MEF 1D - web.mat.upc.edu

MEF 1D 31 / 76

Cuestiones

2 [Opcional] Sea Ω = [a,b] un intervalo y x ∈ R.a) Las coordenadas baricéntricas α = (α1, α2) ∈ R2 del punto

x respecto el intervalo Ω están completamentedeterminadas por las condiciones

x = α1a + α2b,α1 + α2 = 1.

Encuentra su expresión y comprueba que x ∈ Ω⇔ α ≥ 0.b) Crea una función

1 function [alphas,isInside] = baryCoord1D(interv,x)

donde:interv (array 1x2) = extremos de un intervalo [a, b];x (float) = coordenada de un punto x de la recta;alphas (array 1x2) = coordenadas baricéntricas;

isInside =

1, si x ∈ Ω0, si x 6∈ Ω

Page 32: MEF 1D - web.mat.upc.edu

MEF 1D 32 / 76

Cuestiones

3 [Opcional] Usa la función baryCoord1D y un malladoadecuado con elementos lineales para crear una función

1 function uP = interpolLinear1D(x,uX,p)

donde:x (array Nx1) = coordenadas de N puntos de la recta;uX (array Nx1) = valores en esos N puntos;p (array Mx1) = coordenadas de M puntos de la recta; yuP (array Mx1) = valores obtenidos por interpolación linealen esos M puntos.

Observaciones:Podéis comprobar vuestra función comparándola con lafunción propia de Matlab interp1;Los vectores x y p pueden estar desordenados; yNo se pide optimizar el código.

Page 33: MEF 1D - web.mat.upc.edu

MEF 1D 33 / 76

Cuestiones

4 [Práctica 2.1] Descomponemos la columna homogéneacargada de la siguiente figura en 4 elementos lineales:

Escribe un script para calcular:a) La variable primaria (es decir, el desplazamiento), la

variable secundaria y la fuerza de reacción en cada nodo; yb) La elongación, la fuerza y la tensión en cada elemento.

Observaciones:Expresa todas las cantidades en unidades del S.I.El área A y el modulo de Young E son constantes.

Page 34: MEF 1D - web.mat.upc.edu

MEF 1D 34 / 76

Cuestiones

5 [1a modificación] Resuelve el problema de la cuestión 4,pero ahora descompón la columna en 8 elementoslineales, sin cambiar ningún otro parámetro del problema.

6 [2a modificación] Resuelve el problema de la cuestión 4,pero ahora supón que el elemento Ω2 tiene

E = 5 · 109N/m2, A = 125 cm2,

y sin cambiar ningún otro parámetro del problema.7 [3a modificación] Resuelve el problema de la cuestión 4,

pero ahora descompón la columna en 2 elementoscuadráticos, sin cambiar ningún otro parámetro delproblema.

Page 35: MEF 1D - web.mat.upc.edu

MEF 1D 35 / 76

Cuestiones

8 Consideramos el PVF[EDO 2o orden] u′′ + u/10 = 0, x ∈ [0,2],[CF esencial] u(0) = α0,[CF natural] u′(2) = β1.

a) Evalua en el punto x? = 1 la solución aproximada uapr(x)que se obtiene aplicando el MEF con 100 elementoslineales de igual longitud cuando α0 = 1.8 y β1 = 0.

b) Ídem en el punto x? = 1.1 cuando α0 = 1.2 y β1 = 0.6,suponiendo que uapr(x) se toma como la interpolaciónlineal en los nodos.

Page 36: MEF 1D - web.mat.upc.edu

MEF 1D 36 / 76

Cuestiones

9 [Práctica 2.2] Consideramos el PVF[EDO 2o orden] u′′ = u + x , x ∈ [0,1],[CFs esenciales] u(0) = 0, u(1) = 2,

cuya solución exacta es uexa(x) = 3sinh xsinh 1

− x .

a) Calcula la solución aproximada uapr(x) que se obtieneaplicando el MEF con nElem = [5,50,500,5000]elementos lineales de igual longitud.

b) Calcula el valor máximo del error absoluto εabs(x) en elconjunto de los nNodes = nElem +1 nodos.

c) ¿Qué conclusiones extraes sobre el orden de convergenciadel MEF 1D con elementos lineales?

Page 37: MEF 1D - web.mat.upc.edu

MEF 1D 37 / 76

Cuestiones

10 Consideramos el PVF[EDO 2o orden] − d

dx

(x du

dx

)+ u + x = 0, x ∈ [0,1],

[CFs esenciales] u(0) = 0, u(1) = 2.

a) Calcula la solución aproximada uapr(x) que se obtieneaplicando el MEF con nElem = 10 elementos lineales deigual longitud.

b) Calcula el promedio de la solución aproximada en losnodos.

Page 38: MEF 1D - web.mat.upc.edu

MEF 1D 38 / 76

Cuestiones

11 Consideramos el PVF[EDO 2o orden] u′′ = u − 3, x ∈ [0,1],[CFs esenciales] u(0) = 0, u(1) = 2,

cuya solución exacta es

uexa(x) = 3− 3 cosh x +3 cosh 1− 1

sinh 1sinh x .

a) Calcula la solución aproximada uapr(x) que se obtieneaplicando el MEF con nElem = [1,10,100] elementoscuadráticos de igual longitud.

b) Calcula el valor máximo del error absoluto εabs(x) en elconjunto de los nNodes = 2*nElem +1 nodos.

c) ¿Qué conclusiones extraes sobre el orden de convergenciadel MEF 1D con elementos cuadráticos?

Page 39: MEF 1D - web.mat.upc.edu

MEF 1D 39 / 76

Cuestiones

12 [Díficil] Consideramos el PVF[EDO 2o orden] −u′′ + u = 1 + 3x , x ∈ [0,1],[CFs esenciales] u(0) = 1, u(1) = 0,

cuya solución exacta es uexa(x) = 1 + 3x − 4sinh xsinh 1

.

a) Calcula la solución aproximada uapr(x) que se obtieneaplicando el MEF con 10 elementos lineales de iguallongitud. Después, calcula el promedio del error absolutoεabs(x) en el conjunto de los 11 nodos.

b) Calcula la solución aproximada uapr(x) que se obtieneaplicando el MEF con 5 elementos cuadráticos de iguallongitud. Después, calcula el promedio del error absolutoεabs(x) en el conjunto de los 11 nodos.

c) A igual número de nodos, ¿parece mejor trabajar conelementos lineales o cuadráticos?

Page 40: MEF 1D - web.mat.upc.edu

MEF 1D 40 / 76

Cuestiones

13 [Ingenioso] Consideramos el PVF[EDO 2o orden] d

dx

(2x du

dx

)= 3, x ∈ [1,e],

[CFs esenciales] u(1) = 3/2, u(e) = 3/2,

cuya solución exacta es uexa(x) = 32 (x + (1− e) log x),

donde log x es el logaritmo natural en base e ≈ 2.7172 . . ..a) Calcula la solución aproximada uapr(x) que se obtiene

aplicando el MEF con 1000 elementos lineales de iguallongitud.

b) Aproxima los valores de la derivada de la solución enambos extremos del intervalo [1,e].Indicación: Usa el vector de variables secundarias.

c) Calcula el valor absoluto de la diferencia entre los dosvalores aproximados y los dos valores exactos

u′(1) = 3− 3e/2, u′(e) = 3/2e.

Page 41: MEF 1D - web.mat.upc.edu

MEF 1D 41 / 76

Cuestiones

14 [P1–Junio 2021] Consideramos el PVF[EDO 2o orden] −u′′ + 2u = 4, x ∈ [−1,1],[CFs esenciales] u(−1) = 1, u(1) = 4.

Sean u4(x), u40(x) y u400(x) las soluciones aproximadasque se obtienen aplicando el MEF con nElem = 4,nElem=40 y nElem=400 elementos lineales de iguallongitud, respectivamente.

a) Calcula el valor de la variable secundaria Q en los dosextremos del intervalo [−1,1] cuando nElem = 4.

b) Calcula ε(x) = |u400(x)− u40(x)| en x = 0 y en x = 0.357.

Indicación: El comando interp1 es muy útil para evaluarlas soluciones aproximadas.

Page 42: MEF 1D - web.mat.upc.edu

MEF 1D 42 / 76

Respuestas

Índice

1 ProblemasPVFs lineales 1DElasticidad lineal 1D

2 Repositorio oficial

3 Comandos específicos

4 Cuestiones

5 Respuestas

Page 43: MEF 1D - web.mat.upc.edu

MEF 1D 43 / 76

Respuestas

1 Función:1 function [nodes,elem] = mesh1D(interv,nElem,isLinear)2 %FILE: mesh1D.m3 %DESCRIPTION:4 %Create a uniform 1D mesh in a interval with linear or quadratic elements5 %INPUT:6 % interv (array 1x2) = Interval [a,b]7 % nElem (integer) = number of elements,8 % isLinear (integer) = if isLinear=0, then we deal with quadratic elements,9 % otherwise, we deal with linear elements.

10 %OUTPUT:11 % nodes (array nNodes x 1) = Coordinates of nodes; each node in a row12 % elem (array nElem x nVert) = Elements; the indexes of the 2 (linear)13 % or 3 (quadratic) nodes of each element14 %EXAMPLE OF USE: [nodes,elem]=mesh1D([0,1],5,1)1516 if isLinear %Linear elements17 nNodes = nElem + 1; %Number of nodes18 nodes = linspace(interv(1),interv(2),nNodes)’;19 %elem(e,:)=[e,e+1]20 elem = [(1:nElem)’,(2:nElem+1)’];21 else %Quadratic elements22 nNodes = 2*nElem + 1; %Number of nodes (is an odd number)23 nodes = linspace(interv(1),interv(2),nNodes)’;24 %elem(e,:) = [2*e-1, 2*e, 2*e+1]25 elem = [(1:2:nNodes-2)’,(2:2:nNodes-1)’,(3:2:nNodes)’];26 end

Page 44: MEF 1D - web.mat.upc.edu

MEF 1D 44 / 76

Respuestas

2 a) α1 = (b − x)/h y α2 = (x − a)/h, donde h = b − a.b) Función:1 function [alphas, isInside] = baryCoord1D(interv, x)2 %FILE: baryCoord1D.m3 %DESCRIPTION: Compute the barycentric coordinates of a point x4 % with respect to an interval [a,b]5 %INPUT:6 % interv (array 1x2) = End-points of the interval,7 % x (float) = Coordinate of the point.8 %OUTPUT:9 % alphas (array 1x2) = Barycentric coordinates of the point

10 % isInside (integer) = if isInside=1, the point belongs to the interval,11 % if isInside=0, the point lies outside.12 %EXAMPLE OF USE: [alphas, isInside]=baryCoord1D([0,1], 0.5)1314 % Part 1: Compute the barycentric coordinates15 a = interv(1);16 b = interv(2);17 h = b-a; %Length of the interval18 alphas = [b-x,x-a]/h; %Barycentric coordinates19 % Part 2: Check if the point is inside the interval20 isInside=1;21 if (min(alphas) < -1.e-14) %We consider a small tolerance for safety22 isInside=0;23 end

Page 45: MEF 1D - web.mat.upc.edu

MEF 1D 45 / 76

Respuestas

3 Función:1 function uP = interpolLinear1D(x,uX,p)2 %FILE: interpolLinear1D.m3 %DESCRIPTION: Given a 1D mesh with linear elements, some values at its4 %nodes and many points, we find the element containing each point and we5 %linearly interpolate the value at each point6 %INPUT:7 % x (array N x 1) = Coordinates of N points in the real line8 % uX (array N x 1) = Values at these N points9 % p (array M x 1) = Coordinates of M points in the real line

10 %OUTPUT:11 % uP (array M x 1) = linearly interpolated values at the M points12 [nodes,ix] = sort(x); %We sort the given points13 uX = uX(ix); %We reorder the given values14 N = size(x,1); %N = numNodes15 M = size(p,1);16 elem = [(1:N-1)’,(2:N)’]; %Linear elements: numElem = numNodes-117 uP = zeros(M,1);18 for i=1:M %We run over all points19 for e=1:N-1 %We run over all elements20 a = nodes(elem(e,1)); %Left end-point of the element21 b = nodes(elem(e,end)); %Right end-point of the element22 [alphas, isInside] = baryCoord1D([a,b],p(i));23 if isInside %If isinside, compute the results and break the loop24 uP(i) = dot(alphas,uX(elem(e,:))); %Scalar product25 break26 end27 end28 end

Page 46: MEF 1D - web.mat.upc.edu

MEF 1D 46 / 76

Respuestas

4 Ejecutando el script de las siguientes tres páginas seobtiene que:

1 >> p21_Question42 Node Type Displacement Q React force3 1 Fixed 0.000000e+00 9.600000e+05 9.600000e+054 2 Free -8.640000e-04 -2.200000e+05 -2.910383e-115 3 Free -1.530000e-03 -2.200000e+05 -1.455192e-106 4 Free -1.998000e-03 -2.200000e+05 1.746230e-107 5 Free -2.268000e-03 -3.000000e+05 2.910383e-108 Element Elongation Force Stress9 1 -8.640000e-04 -9.600000e+05 -3.840000e+07

10 2 -6.660000e-04 -7.400000e+05 -2.960000e+0711 3 -4.680000e-04 -5.200000e+05 -2.080000e+0712 4 -2.700000e-04 -3.000000e+05 -1.200000e+07

Observaciones:La fuerza de reacción en la base es la suma de todas lasfuerzas y cargas que actúan sobre la columna: 6P + F .Los nodos superiores se desplazan más que los inferiores.Los elementos inferiores se contraen más que lossuperiores.Se ejerce más fuerza y tensión sobre los elementosinferiores.

Page 47: MEF 1D - web.mat.upc.edu

MEF 1D 47 / 76

Respuestas

Script:1 %FILE: MEF1D_Question4.m (see the slides MEF 1D)2 %DESCRIPTION: We study a constant loaded homogeneous column.3 %STEPS:4 %1) Define parameters, nodes, and elements5 %2) Construct the local and global stiffness matrices Ke and K6 %3) Construct the global secondary variables vector Q7 %4) Deal with the fixed nodes coming from the Boundary Conditions (BCs)8 %5) Solve the linear system with the free nodes9 %6) Post-process

1011 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%12 % 1.- Parameters, nodes & elements %13 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%14 L = 18; %Total length (in m)15 E = 2e+11; %Young’s modulus (in N/m^2)16 A = 250e-4; %Section area (in m^2)17 P = 11e+4; %Load values (in N)18 F = 3e+5; %Top load value (in N)19 nElem = 4; %Number of elements20 nNodes = nElem + 1; %Number of nodes21 h = L/nElem; %Lenght of each element22 nodes = linspace(0,L,nNodes); %Another way: nodes=0:h:L;23 elem = zeros(nElem,2); %We reserve space for the matrix elem24 for e=1:nElem %Run over all elements25 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+126 end

Page 48: MEF 1D - web.mat.upc.edu

MEF 1D 48 / 76

Respuestas

28 %%%%%%%%%%%%%%%%%%%%%%%%%29 % 2.- Matrices Ke and K %30 %%%%%%%%%%%%%%%%%%%%%%%%%31 Ke = E*A*[1,-1;-1,1]/h; %Ke constant -> Outside the loop32 K = zeros(nNodes); %Space for the matrix K33 for e=1:nElem %Run over all elements34 rows = elem(e,:); %The nodes of the element e35 colums = rows;36 K(rows,colums) = K(rows,colums) + Ke; %Assembly37 end3839 %%%%%%%%%%%%%%%%40 % 3.- Vector Q %41 %%%%%%%%%%%%%%%%42 Q = zeros(nNodes,1); %Space for the column vector Q43 Q(2:4) = -2*P; %Only the nodes 2, 3, and 4 bear the loads 2P44 Q(nNodes) = -F; %The last node bears the top load F4546 %%%%%%%%%%%%%%%%%%%%%%%%%%47 % 4.- Fixed & free nodes %48 %%%%%%%%%%%%%%%%%%%%%%%%%%49 u = zeros(nNodes,1); %Space for the column displacement vector u50 fixedNodes = 1; %Fixed Nodes (the first node is fixed at the floor)51 u(fixedNodes) = 0; %BC on the fixed nodes (it is an essential BC)52 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes53 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify linear system (unncessary)54 Qm = Q(freeNodes);55 Km = K(freeNodes,freeNodes);

Page 49: MEF 1D - web.mat.upc.edu

MEF 1D 49 / 76

Respuestas

57 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%58 % 5.- Solve the linear system for the free nodes %59 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%60 um = Km\Qm; %Displacements of the free nodes61 u(freeNodes) = um;6263 %%%%%%%%%%%%%%%%%%%%64 % 6.- Post-process %65 %%%%%%%%%%%%%%%%%%%%66 reactForces = K*u-Q; %Reaction forces appear on fixed nodes67 Q(fixedNodes) = K(fixedNodes,:)*u; %See page 182 of Toni’s slides68 disp(’Node Type Displacement Q React force’);69 for n=1:nNodes70 if ismember(n,fixedNodes)71 fprintf(’%d Fixed %13.6e %13.6e %13.6e\n’,...72 n,u(n),Q(n),reactForces(n));73 else74 fprintf(’%d Free %13.6e %13.6e %13.6e\n’,...75 n,u(n),Q(n),reactForces(n));76 end77 end78 disp(’Element Elongation Force Stress’);79 for e=1:nElem80 elongation = u(elem(e,end))-u(elem(e,1)); %Change in length for element e81 force = E*A*elongation/h;82 stress = force/A;83 fprintf(’%d %13.6e %13.6e %13.6e\n’,...84 e,elongation,force,stress);85 end

Page 50: MEF 1D - web.mat.upc.edu

MEF 1D 50 / 76

Respuestas

5 Ejecutando un script con 2 modificaciones (ver abajo)sobre el usado en la cuestión 4 se obtiene que:

1 >> MEF1D_Question52 Node Type Displacement Q React force3 1 Fixed 0.000000e+00 9.600000e+05 9.600000e+054 2 Free -4.320000e-04 0.000000e+00 5.399496e-105 3 Free -8.640000e-04 -2.200000e+05 2.037268e-106 4 Free -1.197000e-03 0.000000e+00 1.527850e-097 5 Free -1.530000e-03 -2.200000e+05 -1.193257e-098 6 Free -1.764000e-03 0.000000e+00 3.215315e-109 7 Free -1.998000e-03 -2.200000e+05 6.402843e-10

10 8 Free -2.133000e-03 0.000000e+00 2.882499e-1111 9 Free -2.268000e-03 -3.000000e+05 0.000000e+0012 Element Elongation Force Stress13 1 -4.320000e-04 -9.600000e+05 -3.840000e+0714 2 -4.320000e-04 -9.600000e+05 -3.840000e+0715 3 -3.330000e-04 -7.400000e+05 -2.960000e+0716 4 -3.330000e-04 -7.400000e+05 -2.960000e+0717 5 -2.340000e-04 -5.200000e+05 -2.080000e+0718 6 -2.340000e-04 -5.200000e+05 -2.080000e+0719 7 -1.350000e-04 -3.000000e+05 -1.200000e+0720 8 -1.350000e-04 -3.000000e+05 -1.200000e+07

19 nElem = 8; %Number of elements

43 Q(3:2:7) = -2*P; %Only the nodes 3, 5, and 7 bear the loads 2P

Page 51: MEF 1D - web.mat.upc.edu

MEF 1D 51 / 76

Respuestas

6 Ejecutando un script con 3 modificaciones (ver siguientepágina) sobre el usado en la cuestión 4 se obtiene que:

1 >> MEF1D_Question62 Node Type Displacement Q React force3 1 Fixed 0.000000e+00 9.600000e+05 9.600000e+054 2 Free -8.640000e-04 -2.200000e+05 -2.910383e-115 3 Free -5.414400e-02 -2.200000e+05 1.891749e-096 4 Free -5.461200e-02 -2.200000e+05 -2.083834e-087 5 Free -5.488200e-02 -3.000000e+05 -8.963980e-098 Element Elongation Force Stress9 1 -8.640000e-04 -9.600000e+05 -3.840000e+07

10 2 -5.328000e-02 -7.400000e+05 -5.920000e+0711 3 -4.680000e-04 -5.200000e+05 -2.080000e+0712 4 -2.700000e-04 -3.000000e+05 -1.200000e+07

Page 52: MEF 1D - web.mat.upc.edu

MEF 1D 52 / 76

Respuestas

1a modificación: Guardar el módulo de Young y el áreaseccional de cada elemento en unos vectores E y A.

15 E = 2e+11*ones(nElem,1); %Young’s modulus (in N/m^2)16 E(2) = 5e+9; %Young’s modulus of the second element17 A = 250e-4*ones(nElem,1); %Section area (in m^2)18 A(2) = 125e-4; %Section area of the second element

2a modificación: Calcular K e en el bucle de ensamblado.30 %%%%%%%%%%%%%%%%%%%%%%%%%31 % 2.- Matrices Ke and K %32 %%%%%%%%%%%%%%%%%%%%%%%%%33 K=zeros(nNodes); %Space for the matrix K34 for e=1:nElem %Run over all elements35 Ke = E(e)*A(e)*[1,-1;-1,1]/h; %Local stiffness matrix36 rows = elem(e,:); %The two nodes of the element e37 colums = rows;38 K(rows,colums) = K(rows,colums) + Ke; %Assembly39 end

3a modificación: E y A son vectores en el post-proceso.83 force = E(e)*A(e)*elongation/h;84 stress = force/A(e);

Page 53: MEF 1D - web.mat.upc.edu

MEF 1D 53 / 76

Respuestas

7 Ejecutando un script con 2 modificaciones (ver siguientepágina) sobre el usado en la cuestión 4 se obtiene que:

1 >> MEF1D_Question72 Node Type Displacement Q React force3 1 Fixed 0.000000e+00 9.600000e+05 9.600000e+054 2 Free -8.392500e-04 -2.200000e+05 -2.910383e-115 3 Free -1.530000e-03 -2.200000e+05 1.164153e-106 4 Free -1.973250e-03 -2.200000e+05 4.074536e-107 5 Free -2.268000e-03 -3.000000e+05 -2.910383e-108 Element Elongation Force Stress9 1 -1.530000e-03 -8.500000e+05 -3.400000e+07

10 2 -7.380000e-04 -4.100000e+05 -1.640000e+07

Page 54: MEF 1D - web.mat.upc.edu

MEF 1D 54 / 76

Respuestas

1a modificación: Sustituir los 4 elementos lineales por 2elementos cuadráticos.

19 nElem = 2; %Number of elements20 nNodes = 2*nElem + 1; %Number of nodes21 h = L/nElem; %Lenght of each element [Warning: h ~= 4.5]22 nodes = linspace(0,L,nNodes); %Another way: nodes=0:h/2:L; [Warning]23 elem = zeros(nElem,3); %We reserve space for the matrix elem24 for e=1:nElem %Run over all elements25 elem(e,:)=[2*e-1,2*e,2*e+1]; %Element e connects nodes 2*e-1, 2*e, 2*e+126 end

Advertencia: Cada elemento tiene longitud h = 9 6= 4.5.2a modificación: Usar la matriz K e que corresponde aelementos cuadráticos con a1(x) ≡ EA constante ya0(x) ≡ 0.

31 Ke = E*A*[7,-8,1;-8,16,-8;1,-8,7]/(3*h); %Ke constant -> Outside the loop

Advertencia: Los parentesis que engloban el denominador3*h son esenciales, pues 6/3*2 = 4.

Page 55: MEF 1D - web.mat.upc.edu

MEF 1D 55 / 76

Respuestas

8 Mediante el script de las siguientes páginas vemos que:1 >> alpha0 = 1.8;2 >> beta1 = 0;3 >> xs = 1;4 >> MEF1D_Question85 The approximated value of the solution at xs=1 is us=2.1209926 >> alpha0 = 1.2;7 >> beta1 = 0.6;8 >> xs = 1.1;9 >> MEF1D_Question8

10 The approximated value of the solution at xs=1.1 is us=2.229785

Observación: La solución exacta del PVF es

uexa(x) = α0 cos(x/√

10)+

√10β1 + α0 sin

√2/5

cos√

2/5sin(x/

√10),

lo cual permite darse cuenta que εabs(x) se hace pequeñocuando aumentamos el número de elementos.

Page 56: MEF 1D - web.mat.upc.edu

MEF 1D 56 / 76

Respuestas

Script:1 %FILE: MEF1D_Question8.m2 %DESCRIPTION: Anwers question 8 of the slides "MEF 1D"3 %PARAMETERS: The values alpha0, beta1 and 0 <= xs <= 2 such that4 % u(0) = alpha0, u’(2) = beta1 -> u(xs) = ?5 % must be defined before invoking this script67 %1.- Parameters, nodes & elements8 L = 2; %Length of the interval [0,2]9 a1 = -1; %First coefficient of the 1D model equation

10 a0 = 0.1; %Zero coefficient of the 1D model equation11 f = 0; %Internal forces coefficient of the 1D model equation12 nElem = 100; %Number of elements13 nNodes = nElem+1; %Number of nodes14 h = L/nElem; %Lenght of each element15 nodes = linspace(0,L,nNodes)’; %Another way: nodes=(0:h:L)’;16 elem = zeros(nElem,2); %Space for the connectivity matrix17 for e = 1:nElem %Run over all elements18 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+119 end2021 %2.- Matrices Ke and K [Ke constant -> Outside the loop & F=0 in this question]22 Ke = a1*[1,-1;-1,1]/h + a0*h*[2,1;1,2]/6; %The same for all elements23 K=zeros(nNodes); %Space for the stiffness matrix K24 for e=1:nElem %Run over all elements25 rows = elem(e,:); %The two nodes of the element e26 colums = rows;27 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K28 end

Page 57: MEF 1D - web.mat.upc.edu

MEF 1D 57 / 76

Respuestas

30 %3.- Vector Q31 Q=zeros(nNodes,1); %Space for the column vector Q [Note: Q(1:end-1)=0]32 Q(end) = a1*beta1; %Natural BC at the right end-point3334 %4.- Fixed & free nodes35 u = zeros(nNodes,1); %Space for the (approximated) solution u36 fixedNodes = 1; %Fixed nodes (Here, just the first node)37 u(fixedNodes) = alpha0; %Essential BC at the left end-point38 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes39 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system40 Qm = Q(freeNodes);41 Km = K(freeNodes,freeNodes);42 Qm = Q(freeNodes);4344 %5.- Solve the linear system for the free nodes45 um = Km\Qm;46 u(freeNodes) = um;4748 %6.- Post-process: Display the required approximated value at x=xs49 us = interp1(nodes,u,xs); %Linear interpolation provided by Matlab50 fprintf(’The approximated value of the solution at xs=%g is us=%8.6f\n’,xs,us);

Page 58: MEF 1D - web.mat.upc.edu

MEF 1D 58 / 76

Respuestas

9 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question92 nElem Norm-inf abs-error3 5 5.331016419448e-044 50 5.304443396081e-065 500 5.306718020570e-086 5000 7.449234562529e-10

Orden del MEF: El error se hace ≈ 100 = 102 veces máspequeño cada vez que el número de elementos se hace10 veces más grande. Eso significa que el MEF al resolvereste PVF lineal 1D usando elementos lineales secomporta como un método de segundo orden.

Page 59: MEF 1D - web.mat.upc.edu

MEF 1D 59 / 76

Respuestas

Script:1 %FILE: MEF1D_Question9.m2 %DESCRIPTION: Anwers question 9 of the slides "MEF 1D"34 %1.- Parameters, nodes & elements5 L = 1; %Length of the interval [0,1]6 a1 = 1; %First coefficient of the 1D model equation7 a0 = 1; %Zero coefficient of the 1D model equation8 f1 = -1; %Linear coefficient of the internal force of the 1D model equation9 vElem=[5,50,500,5000]; %Vector with the number of linear elements

10 for i=1:length(vElem)11 nElem = vElem(i); %Number of linear elements12 nNodes = nElem+1; %Number of nodes13 h = L/nElem; %Lenght of each element14 nodes = linspace(0,L,nNodes)’; %Another way: nodes=(0:h:L)’;15 elem = zeros(nElem,2); %Space for the connectivity matrix16 for e=1:nElem %Run over all elements17 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+118 end19 %2.- Matrices Ke and K, vectors Fe and F [Ke constant -> Outside the loop]20 K = zeros(nNodes); %Space for the stiffness matrix K21 F = zeros(nNodes,1); %Space for the internal forces vector F22 Ke = a1*[1,-1;-1,1]/h + a0*h*[2,1;1,2]/6; %The same for all elements23 for e=1:nElem24 Fe = f1*h*[2*nodes(e)+nodes(e+1);nodes(e)+2*nodes(e+1)]/6;25 rows = elem(e,:); %The two nodes of the element e26 colums = rows;27 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K28 F(rows) = F(rows) + Fe; %Assembly of F29 end

Page 60: MEF 1D - web.mat.upc.edu

MEF 1D 60 / 76

Respuestas

30 %3.- Vector Q31 Q = zeros(nNodes,1); %Space for vector Q [Note: Q = 0]32 %4.- Fixed & free nodes33 u = zeros(nNodes,1); %Space for the solution u34 fixedNodes = [1,nNodes]; %Fixed Nodes: first and last35 u(fixedNodes) = [0;2]; %Esential BC at both end-points36 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes37 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system38 Km = K(freeNodes,freeNodes);39 FQm = F(freeNodes) + Q(freeNodes); %We take into account F and Q40 %5.- Solve the linear system for the free nodes41 um = Km\FQm;42 u(freeNodes) = um;43 %6.- Post-process: Computation of absolute errors44 Q = K*u-F;45 uexact = exactsolution(nodes);46 normErrorAbs(i) = norm(u-uexact,inf);47 end48 %Display the results49 fprintf(’nElem Norm-inf abs-error \n’);50 for i=1:length(vElem)51 fprintf(’%5d %14.12e \n’, vElem(i), normErrorAbs(i));52 end5354 %Function to evaluate the exact solution55 function u = exactsolution(x)56 u = 3*sinh(x)/sinh(1) - x;57 end

Page 61: MEF 1D - web.mat.upc.edu

MEF 1D 61 / 76

Respuestas

10 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question102 Mean value of the FEM solution = 1.140151194241e+00

Observación: El MEF tiene orden dos, pero no podemoscomprobarlo de forma directa pues no tenemos unafórmula explícita de la solución exacta uexa(x).

Page 62: MEF 1D - web.mat.upc.edu

MEF 1D 62 / 76

Respuestas

Script:1 %FILE: MEF1D_Question10.m2 %DESCRIPTION: Anwers question 10 of the slides "MEF 1D"34 %1.- Parameters, nodes & elements5 L = 1; %Length of the interval [0,1]6 a11 = 1; %Linear term of first coeficient of the 1D model equation: a1(x) = a11*x7 a0 = 1; %The zero coefficient of the 1D model equation is constant: a0(x) = a08 f1 = -1; %Linear term of the internal force of the 1D model equation: f(x) = f1*x9 nElem = 10; %Number of linear elements

10 nNodes = nElem+1; %Number of nodes11 h = L/nElem; %Lenght of each element12 nodes = linspace(0,L,nNodes)’; %Another way: nodes=(0:h:L)’;13 elem = zeros(nElem,2); %Space for the connectivity matrix14 for e=1:nElem %Run over all elements15 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+116 end17 %2.- Matrices Ke and K, vectors Fe and F [Ke0 constant -> Outside the loop]18 K = zeros(nNodes); %Space for the stiffness matrix K19 F = zeros(nNodes,1); %Space for the internal forces vector F20 Ke0 = a0*h*[2,1;1,2]/6; %The same for all elements21 for e=1:nElem22 Ke1 = a11*(nodes(e)+nodes(e+1))*[1,-1;-1,1]/(2*h);23 Ke = Ke1 + Ke0;24 Fe = f1*h*[2*nodes(e)+nodes(e+1);nodes(e)+2*nodes(e+1)]/6;25 rows = elem(e,:); %The two nodes of the element e26 colums = rows;27 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K28 F(rows) = F(rows) + Fe; %Assembly of F29 end

Page 63: MEF 1D - web.mat.upc.edu

MEF 1D 63 / 76

Respuestas

30 %3.- Vector Q31 Q = zeros(nNodes,1); %Space for vector Q [Note: Q(1:end) = 0]32 %4.- Fixed & free nodes33 u = zeros(nNodes,1); %Space for the solution u34 fixedNodes = [1,nNodes]; %Fixed Nodes: first and last35 u(fixedNodes) = [0;2]; %Esential BC at both end-points36 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes37 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system38 Km = K(freeNodes,freeNodes);39 FQm = F(freeNodes) + Q(freeNodes); %We take into account F and Q40 %5.- Solve the linear system for the free nodes41 um = Km\FQm;42 u(freeNodes) = um;43 %6.- Post-process: Display the required mean44 Q = K*u-F; %Unnecessary (not required)45 fprintf(’Mean value of the FEM solution = %14.12e \n’,mean(u));

Page 64: MEF 1D - web.mat.upc.edu

MEF 1D 64 / 76

Respuestas

11 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question112 nElem Norm-inf abs-error3 1 9.104952128745e-044 10 1.423153740687e-075 100 1.547404218649e-11

Orden del MEF: El error se hace ≈ 10000 = 104 vecesmás pequeño cada vez que el número de elementos sehace 10 veces más grande. Eso significa que el MEF alresolver este PVF lineal 1D usando elementoscuadráticos se comporta como un método de cuartoorden.

Page 65: MEF 1D - web.mat.upc.edu

MEF 1D 65 / 76

Respuestas

Script:1 %FILE: MEF1D_Question11.m2 %DESCRIPTION: Anwers question 11 of the slides "MEF 1D"34 %1.- Parameters, nodes & elements5 L = 1; %Length of the interval [0,1]6 a1 = 1; %The first coeficient of the 1D model equation is constant: a1(x) = a17 a0 = 1; %The zero coefficient of the 1D model equation is constant: a0(x) = a08 f = 3; %The internal force of the 1D model equation is constant: f(x) = f9 vElem = [1,10,100]; %Vector with the number of quadratic elements

10 for i=1:length(vElem)11 nElem = vElem(i); %Number of quadratic elements12 nNodes = 2*nElem + 1; %Number of nodes13 h = L/nElem; %Lenght of each element14 nodes = linspace(0,L,nNodes)’; %Another way: nodes=(0:h/2:L)’; [Warning]15 elem = zeros(nElem,3); %Space for the connectivity matrix16 for e=1:nElem %Run over all elements17 elem(e,:)=[2*e-1,2*e,2*e+1]; %Element e connects nodes 2*e-1, 2*e, 2*e+118 end19 %2.- Matrices Ke and K, vectors Fe and F [Ke & Fe constants -> Outside the loop]20 Ke = a0*h*[4,2,-1;2,16,2;-1,2,4]/30 + a1*[7,-8,1;-8,16,-8;1,-8,7]/(3*h);21 Fe = f*h*[1;4;1]/6; %The same for all elements22 K = zeros(nNodes); %Space for the stiffness matrix K23 F = zeros(nNodes,1); %Space for the internal forces vector F24 for e=1:nElem %Run over all elements25 rows = elem(e,:); %The three nodes of the element e26 colums = rows;27 K(rows,colums) = K(rows,colums)+Ke; %Assembly of K28 F(rows) = F(rows)+Fe; %Assembly of F29 end

Page 66: MEF 1D - web.mat.upc.edu

MEF 1D 66 / 76

Respuestas

30 %3.- Vector Q31 Q=zeros(nNodes,1); %Space for the column vector Q [Note: Q = 0]32 %4.- Fixed & free nodes33 u = zeros(nNodes,1); %Space for the solution u34 fixedNodes = [1,nNodes]; %Fixed Nodes (first and last nodes)35 u(fixedNodes) = [0;2]; %Essential BC at both fixed nodes36 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes37 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system38 Km = K(freeNodes,freeNodes);39 FQm = F(freeNodes)+Q(freeNodes); %We take into account F and Q40 %5.- Solve the linear system for the free nodes41 um = Km\FQm;42 u(freeNodes) = um;43 %6.- Post-process: Computation af absolute errors44 Q = K*u-F; %Unnecessary (not required)45 uexact = exactsolution(nodes);46 normErrorAbs(i) = norm(u-uexact,inf);47 end48 %Display the results49 fprintf(’nElem Norm-inf abs-error \n’);50 for i=1:length(vElem)51 fprintf(’%5d %14.12e \n’, vElem(i), normErrorAbs(i));52 end5354 %Function to evaluate the exact solution55 function u = exactsolution(x)56 u = 3 - 3*cosh(x) + ((3*cosh(1)-1)/sinh(1))*sinh(x);57 end

Page 67: MEF 1D - web.mat.upc.edu

MEF 1D 67 / 76

Respuestas

12 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question122 nNodes nElem Type Mean absolute error3 11 10 Linear 1.034342573571e-044 11 5 Quadratic 6.992145771141e-07

Conclusión: En este PVF lineal 1D, a igual número denodos, el error absoluto con elementos cuadráticos esmenor que el error absoluto con elementos lineales.

Page 68: MEF 1D - web.mat.upc.edu

MEF 1D 68 / 76

Respuestas

Script:1 %FILE: MEF1D_Question12.m2 %DESCRIPTION: Anwers question 12 of the slides "MEF 1D"34 %1.- Parameters, nodes & elements5 L = 1; %Length of the interval [0,1]6 a1 = 1; %The first coeficient of the 1D model equation is constant: a1(x) = a17 a0 = 1; %The zero coefficient of the 1D model equation is constant: a0(x) = a08 f0 = 1; %Constant coeficient of the internal force of: f(x) = f0 + f1*x9 f1 = 3; %Linear coeficient of the internal force of: f(x) = f0 + f1*x

10 nNodes = 11; %Number of nodes11 nodes=linspace(0,1,nNodes)’; %Nodes in a column vector12 for iType=1:2 %1-> Linear, 2-> Quadratic13 if iType == 1 %Case of linear elements14 nElem = nNodes-1; %Number of linear elements15 elem = zeros(nElem,2); %Space for the connectivity matrix16 for e=1:nElem %Run over all elements17 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+118 end19 else %Case of quadratic elements20 nElem = (nNodes-1)/2; %Number of quadratic elements21 elem = zeros(nElem,3); %Space for the connectivity matrix22 for e=1:nElem %Run over all elements23 elem(e,:)=[2*e-1,2*e,2*e+1]; %Element e connects nodes 2*e-1, 2*e, 2*e+124 end25 end26 h = L/nElem; %Lenght of each element

Page 69: MEF 1D - web.mat.upc.edu

MEF 1D 69 / 76

Respuestas

27 %2.- Matrices Ke and K, vectors Fe and F [Ke and Fe0 constants -> Outside loop]28 if iType == 1 %Case of linear elements29 Ke = a1*[1,-1;-1,1]/h + a0*h*[2,1;1,2]/6;30 Fe0 = f0*h*[1;1]/2;31 else %Case of quadratic elements32 Ke = a0*h*[4,2,-1;2,16,2;-1,2,4]/30 + a1*[7,-8,1;-8,16,-8;1,-8,7]/(3*h);33 Fe0 = f0*h*[1;4;1]/6;34 end35 K = zeros(nNodes); %Space for the stiffness matrix K36 F = zeros(nNodes,1); %Space for the internal forces vector F37 for e=1:nElem %Run over all elements38 if iType == 1 %Case of linear elements39 Fe1 = f1*h*[2*nodes(e)+nodes(e+1);nodes(e)+2*nodes(e+1)]/6;40 Fe = Fe0 + Fe1;41 else %Case of quadratic elements42 Fe1 = f1*h*[nodes(2*e-1);4*nodes(2*e);nodes(2*e+1)]/6;43 Fe = Fe0 + Fe1;44 end45 rows = elem(e,:); %The (2 or 3) nodes of the element e46 colums = rows;47 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K48 F(rows) = F(rows) + Fe; %Assembly of F49 end50 %3.- Vector Q51 Q = zeros(nNodes,1); %Space for the column vector Q [Note: Q = 0]

Page 70: MEF 1D - web.mat.upc.edu

MEF 1D 70 / 76

Respuestas

52 %4.- Fixed & free nodes53 u = zeros(nNodes,1); %Space for the solution54 fixedNodes = [1,nNodes]; %Fixed Nodes (first and last nodes)55 u(fixedNodes) = [1;0]; %Essential BC on the fixed nodes56 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes57 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system58 Km = K(freeNodes,freeNodes);59 FQm = F(freeNodes)+Q(freeNodes); %We take into account F and Q60 %5.- Solve the linear system for the free nodes61 um = Km\FQm;62 u(freeNodes) = um;63 %6.- Post-process: Computation af absolute errors64 Q = K*u-F; %Unnecessary (not required)65 uexact = exactsolution(nodes);66 meanErrorAbs(iType) = mean(abs(u-uexact));67 end68 fprintf(’nNodes nElem Type Mean absolute error\n’);69 fprintf(’ %2d %2d Linear %14.12e \n’,nNodes,nNodes-1,meanErrorAbs(1));70 fprintf(’ %2d %2d Quadratic %14.12e \n’,nNodes,(nNodes-1)/2,meanErrorAbs(2));7172 %Function to evaluate the exact solution73 function u = exactsolution(x)74 u = 1 + 3*x - 4*sinh(x)/sinh(1);75 end

Page 71: MEF 1D - web.mat.upc.edu

MEF 1D 71 / 76

Respuestas

13 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question132 The derivative at x=1 is approximately -1.077423016895e+003 with an absolute error 2.742061275818e-074 The derivative at x=E is approximately 5.518190609261e-015 with an absolute error 1.008311032447e-07

Observación: La clave consiste en recordar que

u′(a) ≈ −Q1/a1(a), u′(b) ≈ +QN+1/a1(b),

donde Q = (Q1, . . . ,QN+1)′ es el vector columna devariables secundarias, a1(x) es el primer coeficiente de laecuación modelo 1D y los signos −/+ corresponden a losextremos izquierdo/derecho del intervalo inicial [a,b].

Page 72: MEF 1D - web.mat.upc.edu

MEF 1D 72 / 76

Respuestas

Script:1 %FILE: MEF1D_Question13.m2 %DESCRIPTION: Anwers question 13 of the slides "MEF 1D"34 %1.- Parameters, nodes & elements [a0 = 0 -> We skip those terms]5 E = exp(1); %Euler’s number: E = 2.7172...6 L = E-1; %Length of the interval [1,E]7 a11 = -2; %Linear term of first coeficient of the model equation: a1(x) = a11*x8 f = 3; %The internal force of the model equation is constant: f(x) = f9 nElem = 1000; %Number of linear elements

10 nNodes = nElem+1; %Number of nodes11 h = L/nElem; %Lenght of each element12 nodes = linspace(1,E,nNodes)’; %Another way: nodes=(1:h:E)’13 elem = zeros(nElem,2); %Space for the connectivity matrix14 for e=1:nElem %Run over all elements15 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+116 end17 %2.- Matrices Ke and K, vectors Fe and F [Fe constant -> Outside the loop]18 K = zeros(nNodes); %Space for the stiffness matrix K19 F = zeros(nNodes,1); %Space for the internal forces vector F20 Fe = f*h*[1;1]/2; %The same for all elements21 for e=1:nElem22 Ke = a11*(nodes(e)+nodes(e+1))*[1,-1;-1,1]/(2*h);23 rows = elem(e,:); %The two nodes of the element e24 colums = rows;25 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K26 F(rows) = F(rows) + Fe; %Assembly of F27 end

Page 73: MEF 1D - web.mat.upc.edu

MEF 1D 73 / 76

Respuestas

28 %3.- Vector Q29 Q = zeros(nNodes,1); %Space for vector Q [Note: Q(1:end) = 0]30 %4.- Fixed & free nodes31 u = zeros(nNodes,1); %Space for the solution u32 fixedNodes = [1,nNodes]; %Fixed Nodes: first and last33 u(fixedNodes) = [1.5;1.5]; %Esential BC at both end-points34 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes35 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system36 Km = K(freeNodes,freeNodes);37 FQm = F(freeNodes) + Q(freeNodes); %We take into account F and Q38 %5.- Solve the linear system for the free nodes39 um = Km\FQm;40 u(freeNodes) = um;41 %6.- Post-process: Approximations of the derivatives at the endpoints42 Q = K*u-F; %WARNING: We need Q in order to approximate the first derivatives43 exactDerLeft = 3 - 3*E/2;44 exactDerRight = 3/(2*E);45 approxDerLeft = -Q(1)/(a11*1);46 approxDerRight = Q(end)/(a11*E);47 errorDerLeft = abs(exactDerLeft-approxDerLeft);48 errorDerRight = abs(exactDerRight-approxDerRight);49 fprintf(’The derivative at x=1 is approximately %14.12e \n’,approxDerLeft);50 fprintf(’with an absolute error %14.12e \n’,errorDerLeft);51 fprintf(’The derivative at x=E is approximately %14.12e \n’,approxDerRight);52 fprintf(’with an absolute error %14.12e \n’,errorDerRight);

Page 74: MEF 1D - web.mat.upc.edu

MEF 1D 74 / 76

Respuestas

14 Mediante el script de las siguientes páginas vemos que:

1 >> MEF1D_Question142 The value of Q at x=-1 is -1.773886e+003 The value of Q at x=1 is 3.065399e+004 e(0) = 5.951010e-055 e(0.357) = 1.046645e-04

Page 75: MEF 1D - web.mat.upc.edu

MEF 1D 75 / 76

Respuestas

1 %FILE: MEF1D_Question14.m (see question 14 of slides MEF 1D)23 %1.- Parameters, nodes & elements4 a = -1; %Left point of the interval [a,b]=[-1,1]5 b = 1; %Right point of the interval [a,b]=[-1,1]6 L = b-a; %Length of the interval [a,b]=[-1,1]7 a1 = 1; %First coefficient of the 1D model equation8 a0 = 2; %Zero coefficient of the 1D model equation9 f0 = 4; %Constant coefficient of the internal force of the 1D model equation

10 vElem=[4,40,400]; %Vector with the number of linear elements11 for i=1:length(vElem)12 nElem = vElem(i); %Number of linear elements13 nNodes = nElem+1; %Number of nodes14 h = L/nElem; %Lenght of each element15 nodes = linspace(a,b,nNodes)’; %Another way: nodes=(a:h:b)’;16 elem = zeros(nElem,2); %Space for the connectivity matrix17 for e=1:nElem %Run over all elements18 elem(e,:) = [e, e+1]; %Element e connects nodes e and e+119 end20 %2.- Matrices Ke and K, vectors Fe and F [Ke constant -> Outside the loop]21 K = zeros(nNodes); %Space for the stiffness matrix K22 F = zeros(nNodes,1); %Space for the internal forces vector F23 Ke = a1*[1,-1;-1,1]/h + a0*h*[2,1;1,2]/6; %The same for all elements24 for e=1:nElem25 Fe = f0*h*[1;1]/2;26 rows = elem(e,:); %The two nodes of the element e27 colums = rows;28 K(rows,colums) = K(rows,colums) + Ke; %Assembly of K29 F(rows) = F(rows) + Fe; %Assembly of F30 end

Page 76: MEF 1D - web.mat.upc.edu

MEF 1D 76 / 76

Respuestas

31 %3.- Vector Q32 Q = zeros(nNodes,1); %Space for vector Q [Note: Q = 0]33 %4.- Fixed & free nodes34 u = zeros(nNodes,1); %Space for the solution u35 fixedNodes = [1,nNodes]; %Fixed Nodes: first and last36 u(fixedNodes) = [1;4]; %Esential BC at both end-points37 freeNodes = setdiff(1:nNodes,fixedNodes); %Complementary of fixed nodes38 %5.- Solve the linear system for the free nodes39 Q = Q-K(:,fixedNodes)*u(fixedNodes); %Modify the linear system40 Km = K(freeNodes,freeNodes);41 FQm = F(freeNodes) + Q(freeNodes); %We take into account F and Q42 um = Km\FQm;43 u(freeNodes) = um;44 %6.- Post-process: Computation of secondary variables45 Q = K*u-F;46 if (nElem == 4)47 fprintf(’The value of Q at x=-1 is %e \n’,Q(1));48 fprintf(’The value of Q at x=1 is %e \n’,Q(end));49 end50 if (nElem == 40)51 u0_40 = interp1(nodes,u,0); %We use interp1 even for a node52 uP_40 = interp1(nodes,u,0.357); %because is the simplest way53 end54 if (nElem == 400)55 u0_400 = interp1(nodes,u,0);56 uP_400 = interp1(nodes,u,0.357);57 end58 end59 fprintf(’e(0) = %e\n’,abs(u0_400-u0_40));60 fprintf(’e(0.357) = %e\n’,abs(uP_400-uP_40));