Lo que he aprendido: plano de fase con PyPlot en Julia

Todo comenzó porque estaba resolviendo numéricamente una ecuación diferencial ordinaria (EDO para los amigos) y quería ver su comportamiento para diferentes condiciones iniciales. ¿Y cuál es la mejor herramienta para eso? El plano de fase. Así que pinté uno en Matlab y luego, como yo no soy de quedarme satisfecha al terminar algo, me pregunté: ¿cómo se hará esta historieta en Julia?

Después de hurgar en la documentación, dar a todos los botones y pintar cosas sin sentido alguno, lo conseguí con PyPlot, uno de los paquetes que se pueden usar en Julia para hacer gráficos.

Os cuento cómo calculé y cómo pinté. Todo es para Julia 1.0.

Unas notas sobre PyPlot

Antes de meternos en harina, no está de más recordar que Julia permite utilizar diferentes paquetes para dibujar, están entre otros el mítico Plots; GR, que va como un tiro y el que he usado yo esta vez: PyPlot, que es una interfaz para Julia del Matplotlib de Python.

No tengo especial predilección por este paquete, simplemente encontré un ejemplo que se parecía a lo que yo quería hacer y seguí la norma básica de la ingeniería: no reinventar la rueda. Norma especialmente certera cuando eres ingeniera mecánica.

Debo añadir también que PyPlot me funcionó directamente, probablemente porque tenía Miniconda instalado y tal vez Matplotlib también. Ni idea. Estoy todo el rato probando chismes, no sé ya ni lo que hago.

En fin, los gráficos en PyPlot funcionan casi como los de Matlab excepto por un par de cosas que a mí me dejaron loca y os pongo aquí para que no os pase lo mismo:

  • Para mostrar la figura actual en una ventana necesitamos hacer gcf() (get current figure), al menos desde un script.
  • PyPlot añade por defecto las figuras encima de las que ya había. Antes había opción hold on como en Matlab pero se desaconseja su uso.
  • A veces no querremos añadir las figuras encima, para borrar anterior tenemos clf() (clear figure)

Sabiendo esto ya podemos hacer gráficos sin control.

El plano de fase

Para que todo el rollo de la ecuación diferencial sea un poco menos abstracto os voy a dar un poco de contexto: estoy estudiando un sistema de un grado de libertad, es decir, una masa atada a una pared mediante un muelle y un amortiguador.

De esta manera, el plano de fase consiste en un gráfico en el que se representa la posición de la masa en el eje horizontal y su velocidad en el vertical y se pintan unas flechillas que indican la dirección en la que saldrá el sistema al darle unas condiciones iniciales de posición y velocidad.

Nos sirve para ver si aumenta o se reduce su velocidad, tiende hacia una posición de equilibrio o no, o para hacer bonito en un paper, la finalidad última de toda nuestra investigación.

Bien, la ecuación que describe el movimiento del sistema de un grado de libertad es la siguiente:

m\ddot{x} + c\dot{x}+kx = 0

donde el puntico hace referencia a la derivada respecto al tiempo y dos punticos a la segunda derivada. Los valores m (masa), c (amortiguamiento) y k (rigidez) son características del sistema y son conocidos.

Voy a hacer una magia todo loca y convertir la ecuación de segundo orden en dos ecuaciones de primer orden. La primera va a ser simplemente el cambio de variable:

v = \dot{x}

osease: que la velocidad es la derivada de la posición respecto al tiempo.

La segunda proviene de la ecuación original y viene a decir que la segunda derivada de la posición (la aceleración) es la primera derivada de la velocidad y por lo tanto:

\dot{v} = \ddot{x}= -\frac{k}{m}x - \frac{c}{m}v

Si cogemos las dos ecuaciones, reorganizamos de tal manera que las cosas con puntico estén a la izquierda y escribimos el sistema en forma matricial tenemos lo siguiente:

\begin{bmatrix}\dot{x}\\\dot{v}\end{bmatrix} =  \begin{bmatrix}0 & 1\\-k/m& -c/m\end{bmatrix}  \begin{bmatrix}x\\v\end{bmatrix}

Todo este lío nos lleva a algo, paciencia. La cuestión es que queremos ver cómo cambia la posición y la velocidad en cada punto. ¿Y qué cacharro matemático explica cómo cambian las cosas? Exactamente, la derivada. Derivada que precisamente tenemos explícitamente representada en el sistema de ecuaciones.

¿Por qué digo eso? Si yo quiero saber cuánto valen las derivadas de mis variables en el punto (1,0) no tengo más que sustituirlo en la ecuación:

\begin{bmatrix}\dot{x}\\\dot{v}\end{bmatrix} =  \begin{bmatrix}0 & 1\\-k/m& -c/m\end{bmatrix}  \begin{bmatrix}1\\0\end{bmatrix}

como m, c y k son valores conocidos, puedo obtener los valores de las derivadas. Sabiendo esto, puedo pintar una flechillas en el plano que indiquen hacia dónde tiende el sistema si le doy determinadas condiciones iniciales.

Antes de pintar las flechillas, os dejo aquí la función que he escrito en Julia para calcular las derivadas de la posición y el desplazamiento en diferentes puntos del plano. Como es una función genérica, he utilizado x e y para referirme a las variables y u y v para referirme a los cambios en cada punto y no para lo mismo que en el texto. Es aposta para confundir.

Perdonadme la falta de eficiencia y el probable uso de estructuras ridículas, soy novata.

"""
vectorfield(R, [x1 x2 y1 y2])

Calcula el plano de fase de una ecuación diferencial

Input
- R: matriz de coeficientes
- span: límites del campo [x1 x2 y1 y2]

Output
- x : posición
- y : velocidad
- u : vector de desplazamiento en un punto (x,y)
- v : vector de velocidad en un punto (x,y)
"""
function vectorfield(R, span)
# Span
x = range(span[1],span[2],length=20)
y = range(span[3],span[4],length=20)

# Rejilla de puntos
x = repeat(x', length(x)) # solo repite filas
y = repeat(y, 1, length(y))

# Inicialización
u = zeros(size(x));
v = zeros(size(y));

# Derivada en cada punto
for i = 1:size(x,1)*size(x,2)
  der = R*[x[i]; y[i]];
  u[i] = der[1];
  v[i] = der[2];
end

return (x,y,u,v)
end

Trayectoria: Euler progresivo

Antes de que pintemos el gráfico, en plan bonus voy a contar aquí cómo he simulado el comportamiento del sistema en el tiempo con un Euler progresivo, el método más sencillo para resolver una ecuación diferencial numéricamente.

Básicamente consiste en echar una línea desde el primer punto, que conocemos al ser las condiciones iniciales, hasta un poquito más lejos. La línea en cuestión tendrá la pendiente de la derivada en el punto inicial, que conocemos ya que nos la da la ecuación diferencial. Una vez que hemos llegado al segundo punto, tiramos otra línea y así poco a poco vamos avanzando.

Es decir, en el instante de tiempo i+1 x valdrá lo que valía en el instante i más el cambio:

x_{i+1} = x_i + \dot{x_i}h

siendo h el paso que damos en el tiempo.

He escrito una función que me calcula la posición y velocidad del sistema en el tiempo. ¡Cuidado si le quitáis el amortiguamiento que se vuelve inestable! Temas numéricos eh, no se volvería inestable en la realidad.

"""
euler(R, ic, N, h)

Calcula la respuesta a una ecuación diferencial con Euler progresivo

Input
- R  : matrices en Y(t+1) = Y(t) + h*R*Y(t)
- ic : condiciones iniciales
- N  : número de puntos
- h  : paso

Output
- x, v : desplazamiento y velocidad del sistema en el tiempo
"""
function euler(R, ic, N, h)

Y = zeros(2,N);
Y[:,1] = ic;

for t = 1:(N-1)
 Y[:,t+1] = Y[:,t] + h*R*Y[:,t];
end

x = Y[1,:];
v = Y[2,:];

return (x, v)
end

El dibujo final

Ahora que ya sabemos cuánto cambian tanto la posición y la velocidad en los puntos del plano y hemos calculado la trayectoria para un caso concreto, vamos a pintar. Para ello he usado la función quiver que, dándole la posición y los componentes en ambas direcciones, pinta unas simpáticas flechillas.

using PyPlot

# Datos del sistema
m = 1
k = 1
cc = 2*sqrt(k*m)
xi = 0.3
c = xi*cc

# Datos de la simulación
N = 1000
ti = 0
tf = 50
t = range(ti,tf,length=N)
h = t[2]-t[1]

ic = [1 0]'
R  = [0 1; -k/m -c/m]
F  = zeros(2,N)

# Trayectoria
x,v = euler(R, F, ic, N, h)

clf()
plot(x,v)
gcf()

# Plano de fase
span = [-1 1 -1 1]
x,y,u,v = vectorfield(R, span)
q = quiver(x,y,u,v,color="gray")
xlabel("x")
ylabel("v")
gcf()

Así, nos aparece este gráfico:

phase

Aparte de ser muy cuco, este gráfico nos indica que si le damos cualquier tipo de condición inicial a nuestro sistema, tenderá a pararse: todas las flechitas llevan al punto (0,0). O como diría yo si me quiero hacer la interesante: las raíces de este sistema son complejas con parte real negativa.

Y hasta aquí hemos llegado, os dejo una pregunta de deberes: ¿qué pinta creéis que tendría el plano de fase si le quitásemos el amortiguamiento? Contadme vuestras sospechas.

Referencias

Ejemplos de gráficos en Julia


Os dejo con la canción más bonita del mundo.

Camino a la panificación: bizcocho de calabaza

Hoy traigo un bizcocho que suelo hacer a menudo, es poco dulce, húmedo y denso, como me gustan a mí los bizcochos. Suelo aprovechar para asar una calabacilla de campana cuando hago pan, se aprovecha mejor el calor y luego hay deliciosa calabaza asada para bizcochar, risottear o hacer delicioso hummus calabácido (con la tortilla de patata y el miso mi alimento favorito del mundo).

El último que hice tuvo el mérito añadido de proceder de una calabaza producida por mi huerto. Metros y metros cuadrados de plantas de calabaza que produjeron exactamente dos calabazas. En fin, os dejo mi proceso de crear bizcocho naranja.

Bizcocho de calabaza

  • Dificultad: echar productos en un bol
  • Imprimir

Verdura en el dulce




Ingredientes

  • 280g calabaza asada
  • 200g yogur líquido casero
  • 60g aceite
  • 2 huevos
  • 260g harina integral de espelta
  • 100g azúcar
  • 1 cucharadita levadura
  • 1 cucharadita bicarbonato
  • 2 cucharaditas especias (canela, jengibre, nuez moscada)

Direcciones

  1. Bato los huevos con el azúcar con brío con las varillas.
  2. Añado el aceite y el yogur y bato más.
  3. Agrego la harina con la levadura, el bicarbonato y las especias y mezclo, esta vez con una cuchara, lengua o similar.
  4. Uno la pulpa de calabaza asada a la mezcla con la cuchara.
  5. Horneo en horno precalentado a 180C durante 40′.

¡La próxima vez que lo haga a ver si le saco foto!

En qué ando: abril

El mes de abril ha estado marcado por mi trabajo en el huerto: plantar, desherbar, regar y ver crecer la vida. Abril ha sido un mes de introspección, así que he escrito poco y leído mucho. Solté un poco de lastre escribiendo una cosa rara sobre la vida gracias a la cual me ha escrito mucha gente. Es curioso cómo ha llenado la gente los huecos y ha interpretado el texto según su propia experiencia. Es lo que quería y me alegro de haberlo conseguido.

Lechuga de hoja de roble en primer plano, rúcula e hinojo detrás

Luego ya volví al Emacs, con un truquillo sobre el buffer de paquetes y aprendí a hacer tests unitarios en Matlab.

Algunas cosas interesantes

Este mes he leído muchísimo. He recuperado el vicio lector de cuando era adolescente después de unos cuantos años de desconexión. Supongo que tiene relación con leer cosas buenas. Listo aquí unas pocas.

Sigue leyendo

Lo que he aprendido: tests en Matlab

He contado más veces que programo a diario sin saber programar. Esto me lleva a situaciones absurdas y unas pérdidas de tiempo sin igual a las que me gustaría poner remedio. Por ese motivo, estoy intentando aprender tácticas que me aligeren el trabajo. Los tests son una de ellas, así que he estado jugando un poco con los tests de Matlab.

Os cuento lo que he hecho y provecho para hacer propaganda de mi campo de estudio: las vibraciones.

Definir la función

Imaginemos que queremos comprobar que una determinada función se comporta de una determinada manera. Voy a usar como ejemplo el MAC (Modal Assurance Criterion), un número que nosotros los ingenieros mecánicos usamos para ver cuánto se parecen dos modos. Dicho así suena muy complejo, pero simplemente es una multiplicación escalar entre dos vectores que previamente hemos normalizado, es decir, que hemos dividido entre su magnitud. Visto en dos dimensiones consiste simplemente en calcular la sombra que un vector proyectará sobre el otro cuando situamos ambos en el mismo origen.

En fin, para dos vectores cualquiera (¡que pueden ser hasta complejos!) se puede calcular el MAC mediante la siguiente función:

function MAC = mac(a,b)
% Calcula el MAC entre los modos a y b
%
% MAC = MAC(a,b)
%
% donde a y b son vectores columna de tamaño Nx1

MAC = abs(a'*b)^2/((a'*a)*(b'*b));

end

Definir los tests

Hemos dicho que el MAC indica cuánto se parecen dos vectores y que representa la sombra de uno sobre el otro. Así, se me ocurren dos manera de comprobar si la función hace lo que debe:

  • Cuando los dos vectores son perpendiculares, el MAC tiene que ser cero porque la longitud de la proyección de uno sobre el otro (la sombra) es cero.

  • Cuando los dos vectores son iguales, el MAC tiene que ser uno porque son lo máximo de parecidos que pueden ser y al ser unitarios la máxima proyección solo puede medir uno.

Ahora toca definir esas condiciones en lenguaje matlabiano. Yo he ido por lo sencillo y he usado vectores bidimensionales:

% TESTS
% Vectores perpendiculares --> MAC = 0
aOrt = [1 0]';
bOrt = [0 1]';

% Vectores iguales --> MAC = 1
aSame = [1 1]';
bSame = [1 1]';

%% Test 1: vectores perpendiculares
assert(mac(aOrt, bOrt) == 0)

%% Test 2: vectores iguales
assert(mac(aSame, bSame) == 1)

El primer trocico son las definiciones, luego viene cada test en una celda de Matlab, un trozo que comienza por dos porcentajes. Este cachito de código lo he guardado como testMac.m y será el archivo que Matlab usará para poner a prueba mi función.

Testar la función

Para lanzar los tests ejecutamos runtest dándole como argumento el ficherillo donde hemos definido los tests:

result = runtests('testMac');

que nos dirá si han fallado los test o no y nos guardará la información que luego podemos ver en una simpática tabla haciendo:

rt = table(result)

Y, hala, ya sé testar. Ahora me falta aprender a definir tests con un mínimo de lógica. Lo próximo será investigar esto mismo en Julia. Os contaré.

Referencias

Testing Frameworks en la documentación de Matlab

Write Script-Based Unit Tests en la documentación de Matlab

Modal space articles de Pete Avitabile

Lo que he aprendido: el buffer de paquetes de Emacs

Años usando Emacs y no ha sido hasta hace unos meses que he descubierto que el buffer de los paquetes, ese al que entramos con M-x list-packages es mucho más fácil de usar de lo que yo pensaba.

Resulta que si te posicionas en la línea de un paquete sin instalar y le das a la i lo marcas para instalar, si vas a uno instalado y le das a la d lo marca para eliminar (delete) y si le das a la U así en general, marca los paquetes que hay que actualizar con una I (upgrade). ¿Y ahora cómo hacemos efectivas estas órdenes? Pues dándole a la x. Así todo lo que queramos borrar se borrará, lo que queramos instalar se instalará y lo que queramos actualizar se actualizará.

En la imagen se ve la I mágica de la que hablo en la columna de la izquierda del todo.

paquetes

En fin, aquí lo dejo, por si hay otro genio como yo por ahí al que le resulta útil. A cuidarse.

Referencias

48.1 The Package Menu Buffer en el manual de Emacs


Solo del punk no se vive, hoy suenan trompetas.

El mundo gira gira

Uno de los motivos por los que empecé este blog es porque tengo una necesidad física de escribir. Esta entrada obedece a esa necesidad.


1

Siento a menudo que el mundo va demasiado rápido para mí. Me ocurrió por primera vez con catorce años al volver de las vacaciones de verano. Yo seguía siendo yo mientras que la vida en el colegio había avanzado a un lugar temporal inalcanzable para mí, un lugar repleto de códigos que yo no entendía y normas absurdas que me negaba a respetar, que todavía me niego a respetar. Conseguí más tarde seguir más o menos el ritmo que me imponía la realidad, nunca del todo, manteniendo siempre un pie fuera del torbellino, respetándome, respetando mis tiempos.

Ahora el mundo ha llegado a un nivel de aceleración que, como hace media vida, otra vez no soy capaz de comprender. Veo a la gente correr a mi alrededor para mantenerse en el mismo lugar. Trabajar, trabajar, trabajar. Sin pararse un momento a pensar, preguntarse hacia dónde corren o qué es eso que buscan con tanta ansia.

Por esto reivindico la lentitud, disfrutar del camino. Aunque nunca llegue al destino. ¿Hay acaso un destino?

2

La consecuencia de ser demasiado sensible es preocuparse de todo todo el rato. Me imagino accidentes de todo tipo cuando conduzco, pienso que me van a mandar callar, decirme que yo qué sé, que no tengo derecho a estar ahí, que quién me he creído yo que soy. Me imagino todos los escenarios posibles cuando voy a hacer cualquier cosa con diferentes variaciones de cada uno de ellos en un árbol gigante de universos paralelos que responden a la pregunta ¿y si? hasta el infinito. Pienso que voy a morirme porque me late el corazón a mil por hora en medio de la noche pero es solo un ataque de pánico. Y se acaba. Y no pasa nada.

Mi truco después de tantos años es ponerme en el peor de los casos y ver que no es para tanto. Que sobreviviré. Que he sobrevivido.

3

Lo que me mantiene cuerda es tener la cabeza en las nubes pero los pies en la tierra. Siempre digo que el arte nos va a salvar, estoy aquí ahora por la pintura, la literatura, la música. Pero también por el pan y el huerto, ver crecer la vida me hace estar atada al tiempo y al espacio. Cultivar la mente y cultivar la tierra. Y crear lazos humanos, conectarnos, escucharnos, cuidarnos. No hay nada más revolucionario.

Hay que seguir empujando la piedra a pesar de que vaya a volver a caer por la ladera, precisamente porque va a volver a caer por ladera.

Así que cuando tengáis miedo, cuando penséis que no hay luz, que el pozo es demasiado profundo, venid a sentaros conmigo en el borde del precipicio. Veremos amanecer.

Aquí siempre hay sitio.

En qué ando: marzo

Como que no quiere la cosa ya ha pasado otro mes, otra vez marcado por mis aventuras IRL. El acontecimiento de marzo ha sido que di una charla titulada Software libre. Ética y libertad tecnológica que organizaron Julián Estévez (que luego se me queja de que no le hago propaganda) e Ingeniería Sin Fronteras. La tenéis en vídeo para que veáis mi increíble gusto eligiendo camisetas. También tenéis las traspas que usé, producidas íntegramente con software libre, por supuesto, y uno de los hilos fediversiles en los que me sugirieron cosas para decir. ¡Gracias a todos! Enlazaron además el vídeo en mis queridos denominadores comunes de Sursiendo, ¿qué más se le puede pedir a la vida?

También este mes se ha publicado el vídeo del debate sobre el papel de la mujer en la ciencia que me hicieron moderar avisándome diez minutos antes en la exposición Ciencia Trabajadora organizada por Teknahi y Donostia Kultura.

En lo que respecta al blog, no he escrito mucha cosa y ha sido además todo incluso más aleatorio de lo normal. Hice dos panes rarunos, uno con el resto de fabricar leche de soja y otro con gachas de avena y me acerqué un poco más a mi campo hablando de esculturas cinéticas y metalurgia. Este último artículo es probablemente lo mejor que he escrito en toda mi vida. Finalmente, le escribí una carta de amor a GNU/Linux por los cinco años juntos.

Algunas cosas interesantes

Este mes he leído una barbaridad, os dejo algunas cosas.

Artículos

Libros

Terminé el Recopilatorio de escritos de Emma Goldman (yo soy más de Malatesta), leí por fin Vida líquida (me ayudó a comprender mejor la sociedad) y comencé El capital en el siglo XXI (acabaré dentro de un tiempo).

Además, ojeé el librillo Regulating in the digital world publicado por la Cámara de los Lores que descubrí en la newsletter de Connected Rights que trae trae buenos consejos para encaminar la tecnología que ya hay y la que viene.

Podcasts

Como he vuelto a tejer necesito entretenerme las orejas, para ello qué mejor que mi tríada de podcasts:

Vídeos

Estuve viendo el documental Sitio Distinto sobre la emigración gallega en Euskadi. Consiguió reconectarme con mis raíces que están en Euskadi pero también en Galicia. Se lo agradezco mucho.


Os dejo con música, desde Bergara, con nombre de canción de los Vanilla Muffins y cita de Renton (en la versión del disco):

Maldita sea, tengo que encontrar una manera de incrustar vídeos aquí que no sean de Youtube y que no sean un iframe. El camino a la libertad es rocoso.


  1. Para los despistados: la destrucción del sistema capitalista. 
  2. Mi resumen terriblemente simplificado

    Una señora del Harvard Business School ha escrito un libro sobre el capitalismo de vigilancia. A ella solo le molesta la parte de la vigilancia (recordemos, Harvard Business School). Morozov tiene un poco más de amplitud de miras y nos dice que no estamos ante un capitalismo nuevo, es el mismo viejo conocido y hay que analizarlo como lo que es.

     

5 años en GNU/Linux

Me pasé a GNU/Linux en abril de 2014, lo sé porque escribí sobre ello en una de las primeras entradas del blog. Empecé con Linux Mint en un portátil de mil años que ahora lleva una Debian y que sustituí hace un par de años por un ordenador finito de fabricación nacional que vino con elementaryOS, distro de la que no he salido desde entonces.

En estos cinco años en GNU/Linux he aprendido más que en toda una vida en Windows, en parte por mi curiosidad y en parte por todas las vecinas que cuentan sus experiencias en la red. Porque hablar de GNU/Linux, y de software libre en general, es hablar de comunidad. De una comunidad que te acompaña, que te entiende y que valora que hayas salido de la sombra del amo.

Pasarme a GNU/Linux me ha valido además para perder el miedo a romper cosas, instalar una distro desde un pincho es una de las cosas más empoderadoras que he hecho. Es un momento de liberación. Y cualquier novata como yo puede hacerlo. Lo mismo con instalar otros programas, los repositorios son maravillosos: instalas algo y lo borras si no te va, todo en un momento, te olvidas de reinstalar para tener tus programas actualizados. Así le fui cogiendo el gustillo a investigar y a la terminal, algo que da respeto al principio pero que te abre un mundo nuevo después. Así descubrí mi adorado Pandoc, así empecé después con mi amado Emacs, así descubrí git y los archivos de configuración. No sabría vivir sin todo ello.

Es curioso como alguien que usaba justito el Word ha acabado escribiendo todo en texto plano, usando control de versiones hasta en la lista de la compra y plantéandose compilar desde fuente un programa para tener la última versión. Debo reconocer que siempre he sido muy de hurgar, me hice ingeniera porque me gusta desmontar cosas, saber cómo funcionan, y el software libre me ha permitido hacerlo. Nunca habría llegado hasta aquí si hubiera seguido en Windows, este blog no existiría, no tendría el trabajo que tengo y no habría conocido a toda la gente maravillosa del Fediverso. Porque cuando eres libre en un aspecto de tu vida quieres ser libre en todos ellos, cuando eres consciente de cómo funciona la tecnología ya no puedes mirar atrás, cuando sabes que hay alternativa no te conformas con lo que te dan.

Por otros cinco años más.


Os dejo con esta canción en griko, un idioma que hablan menos de mil personas y que está en grave riesgo de desaparición. Todo lo que podamos hacer para salvarlo es poco.

Camino a la panificación: pan con gachas de avena

Teníamos urgencia de pan el otro día en el hogar y no me daba tiempo a hacer mi típico pan de fermentación larga. El problema es que no darle una fermentación larga al pan implica que se endurece con facilidad. Para conseguir un equilibrio entre pan mullido de manera duradera y no esperar un día para incarle el diente pensé en añadirle un ingrediente secreto: gachas de avena.

El resultado: un pan gigante con miga blandita. ¡El pan perfecto para hacer torrijas!

Pan con gachas de avena

De buen pan salen buenas torrijas


Ingredientes

  • 200g masa madre al 100% de hidratación y refrescada con harina integral
  • 500g harina blanca
  • 50g copos de avena
  • 350g agua, 100g para las gachas y 250g para la masa
  • 10g sal
  • 7g levadura fresca de panadero, se puede omitir y esperar más durante la fermentación

Direcciones

  1. Mezclé los copos con 100g de agua y los cociné en el microondas a baja potencia hasta hacer un engrudo.
  2. Una vez que las gachas se enfriaron ligeramente, mezclé la masa madre con el agua, la harina y las gachas y lo dejé 30′ en autólisis.
  3. Añadí la sal y la levadura y amasé.
  4. Lo dejé fermentar 1h 30′ con un pliegue a la mitad.
  5. Formé y lo puse a fermentar otros 45′.
  6. Horneé en horno precalentado a 250ºC durante una hoa, los 10 primeros minutos solo con la resistencia superior y reduciendo paulatinamente la temperatura hasta 180ºC

All iron

Escribí este artículo hace meses para un concurso. No me gusta competir pero me gusta ponerme a prueba con fechas de entrega y temas a tratar. Lo pongo aquí para que ese esfuerzo no sea en vano.


La playa a la que voy tiene la arena roja. Las malas lenguas dicen que es por la refinería de petróleo que ensucia el horizonte mientras engorda las arcas provinciales. Los más optimistas, en cambio, lo achacan a un mineral que ha marcado nuestra historia: el hierro.

Dicen que este color se debe a que la arena proviene de campanil, un mineral de característico color rojo que técnicamente se conoce como hematites roja y que está fundamentalmente compuesto de un óxido de hierro (Fe2O3) que resulta especialmente sencillo de explotar. Este campanil junto a su primo rubio o limonita, un óxido de hierro hidratado (Fe2O3.H2O), y otros hermanos con menor contenido en hierro han sido fundamentales en el desarrollo tecnológico de mi tierra.

Fueros, ferrerías y carboneros

La relación de Bilbao y sus alrededores con el hierro viene de antiguo, tanto que en inglés hay un tipo de espada que toma el nombre de bilbo y se conoce como bilboes a unas esposas que se ponían los tobillos a los esclavos como castigo. Ambas cosas se fabricaban con hierro bilbaíno.

Methought I lay worse than the mutines in the bilboes.

— Hamlet, William Shakespeare

Probablemente parte de este desarrollo se debió a que los fueros recogían el derecho de todos los vizcaínos a explotar de manera individual los yacimientos mineros que se encontraban en su localidad de origen. Mineral que luego debía tratarse para que soltase esos oxígenos que no interesan a la hora de fabricar herramientas.

El método más rudimentario para obtener hierro a partir de los óxidos de hierro presentes en la naturaleza consiste en introducir el mineral junto con una fuente de carbono en un recipiente y pegarle fuego. Así, gracias al calor se consigue separar el hierro del oxígeno según la siguiente reacción de reducción:

Fe2O3 + 3CO → 2Fe + 3CO2

Que se divide en dos etapas, la combustión del carbono y la reducción de los óxidos de hierro propiamente dicha:

2 C(s) + O2(g) → 2 CO(g)

3 Fe2O3(s) + CO(g) → 2 Fe3O4(s) + CO2(g)

Fe3O4(s) + CO(g) → 3 FeO(s) + CO2(g)

FeO(s) + CO(g) → Fe(s) + CO2(g)

En una región que se caracteriza por el verde de sus montañas, la elección obvia como combustible fue el carbón vegetal, sustancia que se obtenía como se muestra en la mítica película Tasio, haciendo una montaña de maderas, cubriéndolas de musgo y ramas y, cómo no, pegándole fuego para así obtener un combustible con un poder calorífico mucho mayor al de la madera. Somos tan aficionados al carbón por estas tierras que los regalos navideños nos los trae un carbonero, Olentzero.

Volviendo al hierro, el proceso de reducción del mineral se llevaba originalmente a cabo en las ferrerías. Se comenzaba alternando capas de mineral, material fundente y carbón vegetal en un horno bajo. Este material fundente ayuda a bajar el punto de fusión de la escoria, la parte del mineral que no sirve, y que se pretende separar del hierro fundido por acción del calor.

Después, se prendía la mezcla y se le insuflaba aire mediante un fuelle, movido generalmente por la fuerza de un río. Tras varios días se obtenía una masa que contenía por un lado el hierro y por otro la escoria, que conseguía eliminarse definitivamente golpeando la masa con un gran mazo movido también por la acción del agua. El producto final tras este proceso es el hierro dulce o forjado, una aleación de hierro con un contenido en carbono menor 0.1%, muy maleable pero no tan resistente.

hornoBajo

Horno bajo. William F. Durfee – “The Development of American Industries Since Columbus”, The Popular Science Monthly, volumen 38, pág 147. Dominio público.

Sigue leyendo