Una hoja de cálculo pensada para ahorrarte tiempo
«Para los animales, el universo entero estaba dividido ordenadamente en:
(a) cosas con las que aparearse, (b) comida, (c) cosas de las que huir y (d) rocas.»
Terry Pratchett. Ritos Iguales (1987)
Clasificar es una forma de conocimiento. Ordenamos, dividimos y etiquetamos las cosas para reducirlas a otros casos conocidos, para ponerles nombre, para quedarnos tranquilos.
Clasificamos las cosas para reducir su incertidumbre, y para ello utilizamos criterios de todo tipo, los hay subjetivos (me gusta, no me gusta), estrictos (tres lados, triángulo; cuatro lados, cuadrilátero), y a veces, también un poco difusos (¿a partir de qué tono de marrón claro se pasa al beige?).
En geotecnia, como en cualquier otra disciplina, tenemos clasificaciones para casi todo (dureza, excavabilidad, resistencia, etc.), y hoy me voy a centrar en la clasificación más habitual, la clasificación unificada de suelos o USCS (Unified Soil Classification System).
En este caso, la incertidumbre, lo que queremos etiquetar, es el comportamiento ingenieril del suelo (de hecho, la norma ASTM D2487 lo llama Classification of Soils for Engineering Purposes), y los criterios a emplear son la granulometría y la plasticidad.
Evidentemente, el comportamiento mecánico del suelo depende de más cosas (humedad, cargas, su velocidad de aplicación, condiciones de contorno, etc.), pero conocer el tipo de suelo es el primer paso (o debería serlo).
Bien, pues dependiendo de su granulometría y plasticidad, como ya he dicho, la clasificación de suelos USCS «etiqueta» el suelo de acuerdo al siguiente esquema (pulsa para verlo mejor):
Y hoy traigo al blog una hoja de cálculo que hace todo este «arbol de decisiones» de forma «casi» automática (antes tendrás que habilitar las macros).
Y alguien dirá que esto es trivial y que ya hay muchas hojas de cálculo así en la red.
Y yo diré que tan trivial no es, porque servidor se ha encontrado suelos mal clasificados en obras, digamos, importantes (de esas de millones de euros).
Y en cuanto a lo de que sea una más, pues… vale, si, quizá lo sea, pero creo que puedo aportar un par de cosas interesantes:
1) El cálculo se hace llamando a una función. Nada de celdas ocultas llenas de fórmulas y cálculos intermedios, sólo una función:
USCS(Grava;Arena;Finos;Cu;Cc;LP;LL)
Donde, obviamente:
- Grava es el porcentaje de grava
- Arena es el porcentaje de arena
- Finos es el porcentaje de finos (limos + arcillas)
- Cu es el coeficiente de uniformidad
- Cc es el coeficiente de curvatura
- LP es el límite plástico
- LL es el límite líquido
(si el suelo no es plástico se puede tomar LP=LL=0)
Es decir, que si tenemos un suelo con, digamos:
- Un 12% de grava, un 23% de arenas y un 65% de finos
- Un coeficiente de uniformidad de 2 y un coeficiente de curvatura de 5
- Un límite plástico de 22 y un límite líquido de 45.
Sólo tenemos que escribir:
USCS(12;23;65;2;5;22;45) y obtendremos “ CL – Arcilla fina arenosa”
Piensa en las ventajas que tiene poder hacerlo así. Puedes ordenar los datos como quieras y olvidarte de cálculos intermedios.
2) Si se conoce la granulometría, la hoja incluye también dos funciones de interpolación para calcular de forma automática los porcentajes de grava, arena y finos y los diámetros D10, D30, D60, calculando también los coeficientes de uniformidad Cu y curvatura Cc.
y 3) TODO el código Visual Basic está disponible para que lo mires, estudies y reutilices. Anímate a programar tus propias funciones en VBA, ganarás tiempo, tu hoja será más limpia y reducirás tus niveles de… colesterol (iba a poner mala leche, pero colesterol suena más educado).
Y ahora, como siempre, voy a soltar un rollo de los míos explicando un montón de cosas, el que quiera la hoja que vaya directamente al final.
VIDA Y MILAGROS
Lo cierto es que esta hoja de cálculo tiene ya unos años. En origen –allá por los 90-, fue una pequeña rutina en la calculadora, escrita en un par de tardes, para comprobar si los ejercicios de geotecnia estaban bien hechos.
Unos años después, ya trabajando como freelance, encargaba los ensayos a un laboratorio que, como decía Sabina del gazpacho de su primera mujer, “el punto del ensayo, joder, si lo tenían”. La verdad es que los hacían realmente bien, eran lentos, concienzudos y precisos…
.… y para compensar, no sabían interpretar los resultados. Daba igual lo que dijera la norma, ellos clasificaban el suelo “a ojo”.
Y necesitaban gafas.
Con la mejor de las intenciones (esto es, cubrirme el culo), cogí aquel código, lo “migré” del BASIC de la calculadora (una Casio FX-850P) al Visual Basic de Excel, le añadí las rutinas de interpolación (la calculadora lo hacía de modo automático), y les regalé la hoja de cálculo con una sincera sonrisa (no es broma, practiqué y todo).
Y ni puto caso, claro.
Tendría que haber practicado más.
Y quizá afeitarme.
Poco después, la empresa cerró. Traumatizado (supongo), mi disco duró falló. Del todo. Kaput. El día antes de hacer las copias de seguridad, as usual. Adiós, hoja de cálculo.
Durante mucho tiempo utilicé otra, sacada no sé de dónde, que nunca terminó de convencerme. Había que estar atento porque fallaba en algunas zonas, pero tenía un código tan enrevesado que nunca me animé a corregirla.
Y hace un par de años, revisando unos disquetes de 3½… ¡¡ Hello again !!
La hoja es prácticamente la misma, sólo he hecho un cambio para poder modificar los tamaños límite arena-grava y arena-finos. Bueno, y he añadido algunos comentarios al código.
SOBRE EL CÓDIGO VISUAL BASIC
El código es muy simple (Keep It Simple, Stupid), básicamente es un montón de condicionales if-then encadenados, siguiendo el esquema de la norma ASTM D2487. La idea es que sea lo bastante limpio como para poder echarle un vistazo y modificar lo que haga falta sin tener que perder un día entero estudiando qué narices hace cada línea.
Además, así es más “portable”, si alguien quiere utilizarlo con otro programa que no sea Excel, creo que me lo agradecerá.
LAS FUNCIONES DE INTERPOLACIÓN
La curva granulométrica es una función monótona, así que he usado una interpolación lineal básica. Si el punto que buscamos está entre dos puntos conocidos se interpola entre ellos (zona 2). Si está fuera de rango, se extrapola tomando los dos puntos anteriores o posteriores (zonas 1 y 3). En el código hay comentarios explicando cada caso.
Detalle importante a tener en cuenta: El método se diseñó para interpolar «a mano» sobre la curva, pero la curva tiene el eje x en escala logarítmica, por lo que no se puede hacer una interpolación lineal directa entre parejas de puntos (x,y).
¿No me crees? Haz la prueba y verás que el punto interpolado no cae sobre la curva. Recuerda que al cambiar de un sistema lineal (x,y) a uno semilogarítmico (log x, y), la curva cambia de forma.
Es decir, que hay que sustituir x por log(x) y operar un poco, obteniendo una función de interpolación distinta para cada eje.
¿Me la estoy cogiendo con papel de fumar, como se dice normalmente? Por supuesto, pero si automatizas algo, hazlo bien.
CÁLCULO DEL PORCENTAJE DE GRAVA, ARENA Y FINOS
Buscamos porcentajes (y), así que interpolaremos en el eje y, aunque primero hay que saber qué criterio de tamaños (eje x) estamos usando:
Tamaño (mm) | ASTM D2487 |
UNE equivalente |
BS 1377 |
UNE-EN ISO 14688 |
Grava – Arena | 4,75 | 5 | 2 | 2 |
Arena – Finos | 0,075 | 0,080 | 0,060 | 0,060 |
Por ejemplo, tomando el criterio del ASTM:
- Los finos serán el porcentaje (y) que pasa por el tamiz/tamaño x=0,075
Finos = interp_y(0,075;rango tamaños;rango porcentajes)
- La grava será el material retenido (100-pasa) en el tamaño x=4,75
Grava = 100 – interp_y(4,75;rango tamaños;rango porcentajes)
- Y la arena será la diferencia entre gravas y finos, o también lo que pasa por el tamaño x=4,75 (arena + finos) menos el contenido en finos:
Arena = interp_y(4,75;rango tamaños;rango porcentajes) – Finos
CÁLCULO DE LOS TAMAÑOS D10, D30, D60
En este caso conocemos los porcentajes (y=10, 30, 60) y queremos interpolar los tamaños correspondientes en el eje x:
D10=Interp_x(10;rango de tamaños;rango de porcentajes)
D30=Interp_x(30;rango de tamaños;rango de porcentajes)
D60=Interp_x(60;rango de tamaños;rango de porcentajes)
Una vez conocidos estos datos, la función ya calcula los coeficientes de uniformidad Cu y curvatura Cc.
En el primer ejemplo de la hoja, tomado del Fundamentos de ingeniería de cimentaciones, de Braja Das, se muestra una curva de sólo cuatro puntos en la que los valores D10 y D30 están extrapolados.
NO SE ADMITEN PUNTOS POR ENCIMA DE LA LÍNEA U, PERO SE PUEDE CAMBIAR
Se dice que Casagrande nunca justificó el origen de la línea U, se limitó a ponerla y decir que se usara como “comprobación” de resultados. Como ya sabemos, esta línea delimita una “cota superior”, totalmente empírica, por encima de la cual no hay suelos naturales (de hecho, lo más próximo a esta línea es la montmorillonita).
A principios de los 80, la ASTM (American Society for Testing and Materials) decidió recortar la gráfica un poco más, “extendiendo” verticalmente la línea en LL=16, ya que casi nunca se encuentran suelos naturales con un límite líquido menor de 16.
En mi experiencia, me he encontrado puntos por encima de la línea U en tres casos:
- Suelos inventados: Lo he dicho alguna vez, para inventar resultados hay que saber mecánica de suelos
- Suelos “alterados”: En este caso fue por otro material artificial que cayó en la muestra, “contaminándola”
- Errores al hacer el ensayo, que desaparecieron al repetirlo
Es decir, que sí funcionó como comprobación de que pasaba algo raro.
Si el punto cae por encima de la línea U la función da error. Si, por alguna razón, quieres eliminar esta condición, sólo tienes que anular la línea correspondiente. Está comentado en el código.
LA LÍNEA U NO ES LA LÍNEA IP=LL
Como ya se ha dicho, la línea U delimita suelos que podrían existir pero no se encuentran en la naturaleza, acotando un poco más los suelos arcillosos, mientras que la línea a 45º delimita suelos en los que el IP> LL, es decir, suelos que no pueden existir en la naturaleza (seguro que hay algún material artificial que lo cumple, pero suelos naturales no).
Por desgracia, es habitual ver gráficas que confunden ambas líneas, incluso en textos universitarios, así que… bueno, podría decirse que la línea U sigue siendo una forma de comprobar algo 🙂
LOS SUELOS ORGÁNICOS NO ESTÁN INCLUIDOS
En ingeniería geotécnica los suelos orgánicos son peligrosos, así que decidí no incluirlos en la hoja. Si hay contenido orgánico vale la pena mirarlo con calma.
¿POR QUÉ NECESITO CONOCER LA PLASTICIDAD SI TENGO MATERIAL GRANULAR?
He sido director de dos laboratorios de geotecnia, y rara era la semana que no escuchaba esta pregunta.
Como ya he dicho al principio, cada clasificación responde a una incertidumbre distinta, y en este caso la incertidumbre es ingenieril. El comportamiento mecánico del suelo se basa en la interacción entre partículas, entre las que tenemos fuerzas de gravedad, capilares, efectivas y, en el caso de las partículas más finas, de Van der Waals.
Bien, pues dependiendo del coeficiente de uniformidad Cu y del índice de vacíos, un contenido de finos del 5% ya rellena los huecos entre partículas y empieza a influir en el comportamiento del suelo…
.… y por eso la clasificación lo tiene en cuenta, porque es necesario conocer la plasticidad, aunque sea un suelo granular. No, no es ninguna conspiración de los laboratorios para que hagas más ensayos, de verdad.
Y si haces los ensayos y resulta que el suelo no es plástico pues, oye, eso que has ganado, pero hay que hacerlos.
Como he dicho, si el suelo no es plástico se puede tomar un valor nulo para los límites de plasticidad. Si el contenido en finos es mayor del 5% la función no dará error, simplemente considerará que la fracción fina corresponde a un limo poco plástico.
¿PUEDO USAR ESTE CÓDIGO PARA LO QUE YO QUIERA?
A ver… esto son cuatro líneas en BASIC llenas de if-then, aquí no hay ningún “secreto industrial” que proteger.
¿Quieres usarlo? Hazlo, para eso lo he publicado.
¿Quieres modificarlo? Hazlo, para eso he comentado el código.
¿Quieres nombrarme? Pues… hazlo, si quieres.
¿Quieres ganar dinero con esto? Pues, mira, eso ya no me parece bien pero, una vez publicado, ya no está en mis manos, así que lo dejo a tu voluntad.
¿CÓMO PUEDO SABER SI EL RESULTADO ES CORRECTO?
El código está revisado hasta la saciedad, pero siempre puede haber algún error. He añadido diez ejemplos tomados de tres textos y los resultado coinciden (bueno, más o menos, algunos textos lo han resuelto de forma aproximada).
En cualquier caso, si encuentras algún error te agradecería que me lo dijeras para poder corregirlo, por favor.
Y eso es todo, espero que a alguien le pueda resultar útil, ya sea para clasificar suelos o para coger ideas sobre Visual Basic.
Psst, recuerda, las macros tienen que estar habilitadas para poder usar la función.
Pues me la descargo!!!
Un saludo Quique.
A ver si nos vemos en esa jungla que es la calle!!
Hooooooombre has vuelto y yo que me alegro campeón.
Excelente aporte. Gracias por compartir!
Muchas gracias.
Se extrañaban tus publicaciones. Ojalá sigas motivándonos con la geotecnia.
Brillante publicación. Creo que no me equivoqué al suscribirme. Felicidades
Muy buen aporte. Tiempo sin leer tus amenas notas.
Dobro jutro.
Muy bien explicadas las rutinas (no solo en el artículo, si no en el editor de módulos). Haces parecer sencillo lo que no lo es.
Pozdrav.