domingo, 9 de febrero de 2020

Hiperelásticidad — Modelo Extended Tube

Se teoriza que todo polímero está constituido por arreglos de cadenas de unidades más fundamentales llamadas monómeros. Las estructuras tipo-cadena de los polímeros, en adelante cadenas poliméricas, pueden estar a su vez entrelazadas unas con otras a través de entrecruzamientos (en inglés esto se conoce ampliamente como –crosslinks–) o enredamientos (en inglés –entanglements–), e interactuando entre sí a través de las fuerzas débiles de van der Waals (ver Figura 1). Lo interesante es que existen diversos modelos hiperelásticos que basan su formulación en el comportamiento de dichas cadenas. Incluso, dichos modelos, son bastante precisos al modelar materiales tipo elastómeros y gomas, como se verá con uno de ellos a continuación.

Figura 1. Modelo básico de cadenas poliméricas de un material. Donde $d_T$ se refiere al diámetro supuesto de un sólo tubo que se forma a través de las cadenas mostradas.


El modelo – Extended Tube (ET) – es un modelo hiperelástico de material que se inspira en la mecánica estadística y la mecánica del comportamiento de las cadenas poliméricas de los materiales tipo goma (Kaliske y Heinrich, 1999). Además, este es un modelo con un enfoque interesante, ya que introduce consideraciones físicas a escala molecular, puesto que construye una descripción formal de la energía de deformación al tomar en cuenta las limitaciones de la red de cadenas moleculares circundantes de los polímeros, y la extensibilidad limitada de estas en la derivación de la expresión de energía libre de Helmholtz (ver Figura 1).

El modelo ET describe la energía de deformación en tres partes: (a) energía existente entre el entrecruzamiento de cadenas poliméricas $\Psi_c$, (b) la energía de “tubo de confinamiento” $\Psi_e$ en el cual se teoriza se encierran dichas cadenas (entiéndase éste tubo como un espacio circundante sobre el cual se mueve una sola cadena y está descrito en términos geométricos por las cadenas vecinas a esta), y (c) la energía debida a deformaciones volumétricas del material $\Psi_v$ (Bergstrom, 2015):
\begin{equation}\Psi_{c} = \frac{G_c}{2}\Big[\frac{(1-\delta^2)(I^{*}_{1}-3)}{1-\delta^{2}(I^{*}_{1}-3)} + \ln\big(1-\delta^{2}(I^{*}_{1}-3)\big) \Big],\end{equation}
(1) 
\begin{equation}\Psi_{e} = \frac{2G_e}{\beta^{2}}\sum_{n=1}^{3}\Big((\lambda^{*}_{i})^{-\beta}-1\Big),\end{equation}
(2) 
\begin{equation}\Psi_{v} = \kappa(J-1)^{2},\end{equation}
(3)

donde $[G_{c}, G_{e}, \delta, \beta, \kappa]$ son parámetros de material, $I^{*}_{1} = J^{-2/3} tr[\mathbf{C}]$ , $\lambda^{*}_{i} =J^{-1/3}\lambda_{i}$, $J = det[\mathbf{F}]$ y $\mathbf{F}, \mathbf{C}$, son el tensor gradiente de deformación y el tensor derecho de deformacion de Cauchy-Green, respectivamente (sobre esto, se sugiere leer esta referencia).
Las ecuaciones (1), (2) y (3) son potenciales energéticos de deformación, por lo que al derivarse con respecto a cada uno de los estiramientos principales y/o los invariantes de deformación (si corresponde), se puede obtener el tensor de Cauchy para esfuerzos reales $\sigma_{ij}$. En el caso de tensión uniaxial y despreciando términos volumétricos:

\begin{equation}\sigma_{uniaxial} = Gc \Bigg[\frac{1+(1+(I^{*}_{1})^{2}-4I^{*}_{1})\delta^{2}+(5I^{*}_{1}-(I^{*}_{1})^{2}-6)\delta^{4}}{[1-(I^{*}_{1}-3)\delta^{2}]^{2}} \Bigg]\Big(\lambda^{2}-\frac{1}{\lambda}\Big) \\ - \frac{2G_e}{\beta}\Bigg[\lambda^{-\beta}-\Big(\frac{1}{\sqrt{\lambda}}\Big)^{-\beta}\Bigg].\end{equation}
(4)

El modelo hiperelástico ET es un enfoque interesante que introduce consideraciones físicas a escala molecular en la formulación de la función de la energía de deformación que, por otra parte, es el punto de partida para la realización de simulación numérica a nivel estructural. Por esto, diversos autores le clasifican como un modelo bastante flexible y eficaz al predecir la respuesta a diferentes direcciones de deformación de un material.

La Figura 2 presenta la comparación entre el modelo ET ($G_e = 0.13$, $G_c = 0.25$, $\delta = 0.02$, y $\beta = 0.36$ ) y el modelo de Ogden para tres parámetros. En este caso, los datos corresponden a tensión uniaxial de los experimentos de Treloar que se puede encontrar en el manual del software Abaqus versión estudiantil. Como se observa, ambos modelos son bastante precisos a deformaciones para $\epsilon < 0.4$. No obstante, debo aquí hacer una pausa y explicar que los valores de las constantes con las que se está graficando el modelo corresponden a las que se apuntan en el libro de Bergstrom (2015), por lo que dejo al lector dé una revisión a ello.

Figura 2. Comparación de los modelos Extended Tube y Ogden con respecto a datos experimentales de Treloar (1944).


El código para generar las curvas se encuentra abajo. Como siempre, el lector ávido encontrará nuevas modificaciones que le resultarán interesantes.

Conclusion

Como se vio, el modelo ET corresponde con una formulación mecánica del comportamiento de las cadenas poliméricas en cuanto a las energías que les involucra. Aunque de ser cierto eso, la verdad es que, desde una perspectiva filosófica, se requiere infraestructura enorme para tratar de falsar, validar, y/o refutar esto (piensesé sobre el equipo necesario para observar las cadenas poliméricas de un material elastómero). No obstante, el modelo es bastante recurrido en la literatura actual, por su versatilidad y poder de predicción (junto con Ogden, cuando sus parámetros están propiamente calibrados, ambos tienen capacidades predictivas con $R^2>0.9$).

Personalmente, cuando de modelar elastómeros se trata, me gusta recurrir al modelo de ET cuando Ogden no es tan preciso. Por esta razón, ambos modelos forman parte de mis instrumentos en la caja de herramientas que conservo para el modelado constitutivo.

Bueno, me despido. Aquí la música ambiental que me ayudó a construir esta entrada:




Referencias

  • M.   Kaliske  y  G.   Heinrich. (1999). An Extended Tube-Model for Rubber Elasticity: Statistical-Mechanical Theory and Finite Element Implementation. Rubber Chemistry and Technology,  72(4), Pp. 602-632.
  • Bergstrom, J. (2015). Mechanics of solid polymers : theory and computational modeling. Amsterdam: William Andrew is an imprint of Elsevier. 


/* © 2020 Alejandro E. Rodriguez-Sanchez.  All rights reserved. //For personal use only. 

It is not permitted to distribute verbatim copies of this document, 
and changing it is not allowed. Contact the owner of the code at arodsn.com blog 
for further permissions.*/

#include <math.h>
#include <fstream>
#include <vector>
using namespace std;

std::vector<double> ExtendedTube(std::vector<double> trueStrain, double Ge, double Gc, double delta, double beta)
{
 std::vector<double> stress(trueStrain.size());
 std::vector<double> lam(trueStrain.size());
 double A = 0;
 double B = 0;
 double C = 0;
 double I1 = 0;

 for (int i = 0; i < trueStrain.size(); i++)
 {
  lam[i] = exp(trueStrain[i]);
 }

 //Tensile
 for (int i = 0; i < trueStrain.size(); i++)
 { 
  I1 = (lam[i] * lam[i] + (2 / lam[i])) * pow(1, (2 / 3));
  A = (1+(1+pow(I1,2)-4*I1)*pow(delta,2)+(5*I1-pow(I1,2)-6)*pow(delta,4))/(pow((1 - (I1 - 3) * pow(delta, 2)), 2));
  B = (lam[i] * lam[i] - (1 / lam[i]));
  C= (2 * Ge / beta)*(pow(lam[i],(-beta))-pow((1/(sqrt(lam[i]))),(-beta)));
  stress[i] += Gc*A*B-C;
 }
 return stress;
}

void main() {

 ofstream Sigma;
 Sigma.open("Sigma.csv");
 ofstream Epsilon;
 Epsilon.open("Epsilon.csv");
 
 std::vector<double> trueStrain(100);
 for (int i = 0; i < trueStrain.size(); i++) {
  trueStrain[i] = (0.022) * i;
 }

 std::vector<double> trueStress(trueStrain.size());
 double Ge = 0.13;
 double Gc = 0.25;
 double delta = 0.02;
 double beta = 0.36;

 double matrix[100][2]; ///

 trueStress = ExtendedTube(trueStrain, Ge, Gc, delta, beta);

 for (int i = 0; i < trueStrain.size(); i++) {
  Epsilon << trueStrain[i] << "\n";
  Sigma << trueStress[i] << "\n";

  matrix[i][0] = exp(trueStrain[i]) - 1; //From true strain to engineering strain
  matrix[i][1] = (trueStress[i]) / exp(trueStrain[i]); // From true stress to engineering stress
 }
 
 ofstream Matrix;
 Matrix.open("Matrix.csv");

 for (auto& row : matrix) {
  for (auto col : row)
   Matrix << col << ',';
  Matrix << '\n';
 }

 Epsilon.close();
 Sigma.close();
 Matrix.close();
}

No hay comentarios.:

Publicar un comentario