1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 2%% Fichier : introduction 3%% Auteur : th202608@pleiades077.intra.cea.fr 4%% Date : 29 avril 2014 5%% Répertoire : /home/th202608/Documents/notes/2014/TutorielMFront/ 6%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 7 8\section{Introduction} 9 10L'objet de ce document est de compléter la documentation de référence 11\mfront{}. Celle-ci se compose aujourd'hui de~: 12\begin{itemize} 13\item une présentation générale et un document de référence sur 14 l'écriture de propriétés matériau et de modèles 15 physico-chimiques~\cite{helfer_generateur_2013-1}~; 16\item un document de référence sur l'écriture de lois de comportement 17 mécanique~\cite{helfer_generateur_2013}~; 18\item différents documents, distribués avec \mfront{}, qui décrivent 19 les interfaces à différents codes aux éléments finis (\castem{}, 20 \aster{} et \zebulon{} notamment)~; 21\item différents supports de formation, eux aussi distribués avec 22 \mfront{}. 23\end{itemize} 24 25L'ensemble des ces documents est disponible sur le site officiel de 26\mfront{}~: 27\begin{center} 28 \href{http://tfel.sourceforge.net}{http://tfel.sourceforge.net} 29\end{center} 30 31Par ailleurs, les utilisateurs de \aster{} disposent déjà de 32documentation propre décrivant l'utilisation de 33\mfront{}~\cite{code_notice_2014,code_mfront01_2014,code_mfront02_2014,code_mfront03_2014}. 34 35L'objet du présent document est de permettre aux nouveaux utilisateurs 36de découvrir pas à pas comment une loi de comportement mécanique peut 37être implantée avec \mfront{}. Pour les applications, nous utiliserons 38dans un premier temps des simulations sur point matériel avec \mtest{} 39(logiciel livré avec \mfront{}) puis, dans un second temps, des 40simulations par éléments finis, en utilisant soit \aster{}, soit 41\castem{}. 42 43\subsection{Comment écrire une loi de comportement~: 44 un exemple très simple} 45 46Dans la suite, les tenseurs d'ordre \(2\) symétriques seront notés 47\(\tenseur{a}\). Les opérateurs linéaires agissant sur les tenseurs 48d'ordre \(2\) symétriques seront notés \(\tenseurq{D}\). 49 50\subsubsection{La loi de comportement de \nom{Norton}} 51 52En guise de préliminaire, prenons par exemple la loi de \nom{Norton}. Elle 53est définie par~: 54\[ 55\left\{ 56 \begin{aligned} 57 \tepsilonto &= \tepsilonel+\tepsilonvis \\ 58 \tsigma &= \tenseurq{D}\,:\,\tepsilonel\\ 59 \tdepsilonvis &= \dot{p}\,\tenseur{n} \\ 60 \dot{p} &= A\,\sigmaeq^{m} 61 \end{aligned} 62\right. 63\] 64où~: 65\begin{minipage}[t]{0.9\linewidth} 66 \begin{itemize} 67 \item \(\tepsilonto\), \(\tepsilonel\), \(\tepsilonvis\) sont des 68 variables tensorielles symétriques représentent respectivement les 69 déformations totale, élastique et visqueuse~; 70 \item \(\tenseur{n}=\Frac{3}{2}\,\Frac{\tenseur{s}}{\sigmaeq}\) est 71 la direction d'écoulement~; 72 \item \(\tenseur{s}\) est le déviateur des contraintes~; 73 \item \(\sigmaeq\) est la norme de \nom{Von Mises}. 74 \end{itemize} 75\end{minipage} 76 77L'opérateur d'élasticité \(\tenseurq{D}\) est calculé à partir du 78module d'\nom{Young} \(E\) et du coefficient de \nom{Poisson} \(\nu\). 79 80\subsubsection{Discrétisation implicite de la loi de \nom{Norton}} 81 82Pour intégrer cette loi dans un calcul de structure, il faut procéder 83à une discrétisation en temps, ce qui revient à définir une suite 84d'instants de calcul \(\left\{t_{i}\right\}_{1\le i\le I}\). 85 86Pour utiliser un algorithme implicite, il suffit d'écrire toutes les 87quantités à l'instant \(t_{i}\) et de remplacer les dérivées en temps 88par leurs incréments sur l'intervalle \(\Delta\, t=t_{i}-t_{i-1}\)~: 89\[ 90\left\{ 91 \begin{aligned} 92 \Delta\,\tepsilonel - \Delta\,\tepsilonto + \Delta\,p\,\tenseur{n} = 0 \\ 93 \Delta\,p - \Delta\,t\, A\,\sigmaeq^{m} = 0 94 \end{aligned} 95\right. 96\] 97avec~: 98\begin{minipage}[t]{0.9\linewidth} 99 \begin{itemize} 100 \item \(\tsigma = \tenseurq{D}\,:\,\tepsilonel\)~; 101 \item \(\tenseur{n}=\Frac{3}{2}\,\Frac{ \tenseur{s} \paren{t_{i}}} { \sigmaeq \paren{ t_{i}}}\)~. 102 \end{itemize} 103\end{minipage} 104 105On obtient ainsi un système de 7 équations~: 6 équations relatives à 106la décomposition additive du tenseur des déformations (en 3D), et une 107équation relative à l'écoulement visco-plastique. Les 7 inconnues 108sont les 6 composantes de \( \Delta \tepsilonel \) et \( \Delta p \). 109 110La résolution implicite de ce système est effectuée par une méthode de 111\nom{Newton}. 112 113\subsubsection{Première implantation} 114 115Voici un exemple très simple d'intégration implicite de ce modèle avec 116\mfront{}~: 117\begin{center} 118 \begin{minipage}[h]{0.7\linewidth} 119 \lstinputlisting{@top_srcdir@/docs/tutorial/mfront/norton.mfront} 120 \end{minipage} 121\end{center} 122 123\paragraph{Description ligne par ligne} Un fichier \mfront{} commence 124généralement par une partie déclarative décrivant l'algorithme utilisé 125pour la résolution, le nom du comportement (ici \nom{Norton}),puis la liste 126des propriétés matériau utilisées. On fournit ensuite le nom des 127variables internes, et la description des équations du système à 128résoudre. 129 130\begin{itemize} 131\item la ligne \(1\) précise que nous allons utiliser une méthode 132 d'intégration implicite~; 133\item la ligne \(2\) donne le nom de la loi~; 134\item la ligne \(3\) précise que l'on utilise un algorithme de 135 \nom{Newton} avec jacobienne numérique~; 136\item la ligne \(5\) demande le calcul de la matrice d'élasticité ~; 137\item les lignes \(7\) et \(8\) définissent les propriétés matériau de la loi ~; 138\item la ligne \(10\) déclare la variable interne \( p \). Signalons 139 que la variable interne {\tt eel} (tenseur déformation élastique 140 \(\tepsilonel\)) est prédéfinie par \mfront{}~; 141\item les lignes \(16\) à \(24\) définissent les équations à résoudre ; 142la convention de nom est la suivante~: 143 pour chaque variale interne {\tt x}, l'incrément est noté {\tt dx}, et l'équation correspondante {\tt fx} ; 144\item la ligne \(17\) demande le calcul de la norme de Von Mises ~; 145\item les lignes \(18\) à \(21\) correspondent au calcul de la 146 direction d'écoulement~; 147\item la ligne \(22\) définit l'équation \(\Delta\,\tepsilonel - 148 \Delta\,\tepsilonto + \Delta\,p\,\tenseur{n} = 0\). En effet, {\tt 149 feel} est initialisé à {\tt deel} et l'opérateur {\tt +=} cumule 150 les valeurs (comme en langage {\tt c}); 151\item la ligne \(23\) définit l'équation \(\Delta\, p - 152 \Delta\,t\,A\,\sigmaeq^{m}=0\). Comme précédemment, {\tt fp} est 153 initialisé à {\tt dp}, et {\tt fp -= xx} est équivalent à {\tt fp = 154 fp - xx} . 155\item les lignes \(26\) à \(29\) permettent de calculer 156 automatiquement l'opérateur tangent à partir de l'inverse de la 157 matrice jacobienne, comme explicité ci-dessous. 158\end{itemize} 159 160On constate que l'écriture de la loi se limite quasiment à la 161description des équations. De plus on bénéficie d'une écriture 162compacte, utilisant des variables tensorielles. 163 164Différentes méthodes d'intégration sont diponibles dans \mfront 165(~\cite{helfer_generateur_2013}). L'algorithme d'intégration utilisé 166ici ({\tt Newton\-Raphson\_\-Numerical\-Jacobian}) permet une écriture 167rapide, et est donc tout à fait adapté au test de modèles. 168 169L'implantation fournit un code beaucoup plus rapide que celle d'un 170algorithme explicite, mais peut toutefois être optimisée en termes de 171performances. Pour cela, il suffit d'ajouter les termes de la matrice 172jacobienne (dérivées des équations par rapport aux inconnues). 173 174De plus, la matrice tangente en sortie de l'intégration est calculée 175automatiquement à partir de la matrice jacobienne, ce qui permet 176d'économiser un temps de développement important et conduit à une 177matrice tangente cohérente de très bonne 178qualité~\cite{helfer_generateur_2013}. Tout ceci conduit, en très peu 179de temps, à une intégration robuste, et une convergence très bonne. On 180voit qu'il est possible de profiter de cette simplicité d'écriture 181pour effectuer des variantes, des tests de modèles, etc. 182 183\mfront{} gère la compilation de la loi, il suffit de taper dans un terminal~: 184\begin{flushleft} 185 {\tt 186 \$ mfront -{}-obuild -{}-interface=aster norton.mfront 187 } 188\end{flushleft} 189ou 190\begin{flushleft} 191 {\tt 192 \$ mfront -{}-obuild -{}-interface=castem norton.mfront 193 } 194\end{flushleft} 195suivant le code de résolution que l'on souhaite utiliser~: l'interface 196{\tt aster} correspond au {\tt Code-Aster}, tandis que l'interface 197{\tt castem} correspond au code {\tt Cast3M}. 198 199Ceci génère deux répertoires~: {\tt src} et {\tt include}. 200 201Selon l'interface, le répertoire src contient en particulier une bibliothèque dynamique~: 202\begin{flushleft} 203 {\tt 204 src/libAsterBehaviour.so 205 } 206\end{flushleft} 207pour une exécution avec \aster{}, ou bien~ : 208\begin{flushleft} 209{ \tt src/libUmatBehaviour.so} 210\end{flushleft} 211pour une exécution avec \castem{}. Le nom {\tt Umat} est historique et 212correspond au nom de la routine que l'utilisateur \castem{} devait 213surcharger avant le support des appels dynamiques. 214 215Dans le cas du code \castem{}, un répertoire nommé {\tt castem} est 216créé dans la plupart des cas. Ce répertoire contient une mise en 217données type de la loi de comportement pour les différentes hypothèses 218de modélisation supportées. 219 220\subsubsection{Premier test} 221 222L'outil \mtest{} permet d'effectuer très facilement des simulations 223sur point matériel, afin de calculer la réponse de la loi de 224comportement à des sollicitations en contraintes ou en déformations. 225 226\mtest{}, couplé à un logiciel d'optimisation comme \adao{}, permet de 227plus d'effectuer le recalage des propriétés matériau. Le fichier de 228données de \mtest{} (nommé ici {\tt norton.mtest}) se présente de la 229façon suivante~: 230\begin{flushleft} 231 \lstinputlisting{@top_srcdir@/docs/tutorial/mtest/norton.mtest} 232\end{flushleft} 233\begin{itemize} 234\item la ligne \(1\) définit la bibliothèque à utiliser et le nom du 235 comportement ~; 236\item les lignes \(2\) à \(5\) définissent les valeurs des propriétés 237 matériau de la loi ~; 238\item la ligne \(6\) déclare la valeur de la température (inutile dans 239 le cas présent)~; 240\item les lignes \(7\) à \(8\) spécifient le chargement, sous la forme 241 de composantes de contraintes ou de déformations en fonction du 242 temps ; 243\item la ligne \(9\) définit la discrétisation en temps, donc les 244 instants calculés. 245\end{itemize} 246 247\begin{figure}[!h] 248 \centering 249 \includegraphics[width=12.959cm,height=11.448cm]{@top_srcdir@/docs/tutorial/images/tutorielch12-img1.png} 250 \caption{Réponse d'une loi de \nom{Norton} à un essai de fluage en 251 traction-cisaillement} 252 \label{fig:Norton:traction-cisaillement} 253\end{figure} 254 255Il suffit alors de lancer le calcul par : 256\begin{flushleft} 257 {\tt 258 mtest norton.mtest 259 } 260\end{flushleft} 261Ceci produit un fichier résultat { \tt norton.res } contenant les 262composantes des tenseurs de déformation, de contrainte, et les 263variables internes en fonction du temps. La réponse en déformation est 264représentée en figure~\ref{fig:Norton:traction-cisaillement}. 265 266\subsection{Plan de ce tutoriel} 267 268Ce tutoriel présente en détail comment développer des lois de 269comportement et ce que l'on peut attendre de \mfront{}. 270 271La section~\ref{sec:rappels-integration} a pour but de situer 272l'intégration de la loi de comportement dans le processus de calcul 273d'un code par éléments finis. 274 275La section~\ref{sec:chaboche} décrit pas à pas l'implantation en 276MFront d'une loi élasto-plastique de Chaboche, puis de sa variante 277visco-plastique, relativement simple, et de quelques extensions. 278 279Enfin, la section~\ref{sec:impl-dune-loi} fournit davantage de 280précisions sur l'intégration, sur la gestion des propriétés matériau, 281et différentes hypothèses de calcul, en décrivant l'implantation d'une 282loi viscoplastique compressible typique du combustible nucléaire. 283 284%%% Local Variables: 285%%% mode: latex 286%%% TeX-master: tutoriel 287%%% End: 288