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