universit e de pau et des pays de l'adour
TRANSCRIPT
UNIVERSIT�E DE PAU ET DES PAYS DE
L'ADOUR
ANN�EE UNIVERSITAIRE 2016/2017
RAPPORT DE STAGE DU SECOND SEMESTRE DE M2DU MASTER MATHEMATIQUES, MODELISATION ET SIMULATION (M.M.S.)
Lieu du stage :
Universit�e Paris-Diderot Paris 7U.F.R. Physique
Laboratoire Mati�ere et Syst�emes Complexes (M.S.C.)Batiment Condorcet
10, rue Alice Domon et L�eonie Duquet75013 PARIS
Intitul�e du sujet du stage :
Mod�elisation de la croissance spiral�ee d'une cellule �a paroi
Tuteurs de stage :
Etienne COUTURIER, CR2 CNRS, U.F.R. Physique, Universit�e Paris-Diderot Paris 7Julien DERR, Ma�tre de conf�erences, U.F.R. Physique, Universit�e Paris-Diderot Paris 7
�El�eve stagiaire et auteur du rapport : Miguel SARRAILH
1
SOMMAIRE
1 Biologie de l'algue �etudi�ee ..................................................................p.4
2 Physique d'une cellule �a paroi ............................................................p.7
3 Mod�elisation num�erique de la cellule �a paroi .....................................p.20
4 Simulation num�erique du ph�enom�ene d'hyper�elasticit�e ....................p.29
5 In uence des �bres attach�ees �a la paroi primaire de la cellule
souche lors de sa turgescence ............................................................p.44
6 Calcul de la fonction de surcharge �dev
. ............................................p.46
7 Conclusion .......................................................................................p.49
8 Bibliographie ..................................................................................p.50
9 ANNEXES .......................................................................................p.51
2
Figure 1: Laboratoire M.S.C., U.F.R. Physique, Universit�e Paris-Diderot Paris 7
INTRODUCTION
Durant une p�eriode conventionnelle de quatre mois, allant du 07 mars au 07 juillet 2017, j'ai e�ectu�e monstage de M2 Math�ematiques, Mod�elisation et Simulation (M.M.S.) �a Paris, dans le 13�eme arrondissement, ausein d'un laboratoire de recherche en Physique situ�e au huiti�eme et dernier �etage du batiment Condorcet situ�e10, rue Alice Domon et L�eonie Duquet :
le laboratoire Mati�ere et Syst�emes Complexes (M.S.C.)
Ce laboratoire est compos�e de 190 personnes (permanentes) environ et fait partie int�egrante de l'U.F.R.Physique de l'Universit�e Paris-Diderot Paris 7, situ�ee dans le 13�eme arrondissement de Paris �egalement. Il sesitue notamment �a quelques pas seulement de l'extraordinaire Biblioth�eque Nationale de France (B.N.F.), projetr�ealis�e �a l'initiative de Fran�cois Mitterrand au terme de son second mandat pr�esidentiel et de sa vie (1994) .
Le batiment Condorcet, lieu principal de mon stage donc, abrite �egalement d'autres laboratoires de rechercheen Physique : m�et�eorologie, cosmologie, physique quantique (M.P.Q.) ou bien physique statistique avec le Laboratoire de Physique Statistique (L.P.S.) de l'ENS rue d'Ulm.
Les di��erentes unit�es de recherche attach�ees au laboratoire M.S.C. s'occupent principalement de probl�emes inh�erents �a la physique de la mati�ere molle ( uides complexes), ou bien de ceux plutot li�es �a la physiquenon-lin�eaire avec notamment l'�etude particuli�erement pr�esente des syst�emes dynamiques hors �equilibre : mor-phog�en�ese des plantes, embryog�en�ese, m�ecanique des tissus cellulaires, morphog�en�ese des dunes , chant desdunes et phyllotaxie (sp�ecialit�es, entre autres, du physicien St�ephane DOUADY, directeur de recherches auCNRS au sein du laboratoire M.S.C. depuis sa fondation en 2005), turbulence d'ondes, dynamique de gon ementdu squelette d'une mousse, dynamique d'impr�egnation d'un mat�eriau poreux par exemples .
Un des objectifs poursuivis par le groupe de recherche li�e �a la Dynamique des Syst�emes Hors �Equilibre(groupe DSHE), dirig�e par Mr. �Eric FALCON et au sein duquel s'inscrivent mes deux tuteurs de stage; queje souhaite remercier tout d'abord pour la sympathie, l'encadrement, le soutien et l'aide qu'ils m'ont apport�esdurant ces quatre mois :
Mr. Etienne COUTURIER (CR2 CNRS)Mr. Julien DERR (Ma�tre de conf�erences);
3
est ainsi de pouvoir comprendre et de d�eterminer des lois de comportement m�ecanique communes �a di��erentessituations exp�erimentales, comme celles �enum�er�ees plus haut, faisant appel �a des domaines aussi vari�es que labiologie, la g�eophysique, l' acoustique, la chimie, la physique statistique ou bien la m�edecine.
Le stage propos�e porte sur la simulation num�erique de la croissance d'une cellule v�eg�etale (Modeling ofspiral growth) et s'inscrit dans un projet de recherche en biophysique sur la mod�elisation num�erique et l'�etudede la croissance d'un tissu v�eg�etal tout entier pour un certain type d'algue verte, poussant majoritairement enmilieux d'eaux douces mar�ecageuses, et poss�edant la propri�et�e importante d'etre la plus proche , g�en�etiquementparlant, des plantes vertes terrestres, lesquelles pourraient bien etre, selon certaines �etudes phylog�en�etiques encours, ses descendantes directes (apr�es les mousses, �egalement �etudi�ees au sein du laboratoire M.S.C.) :
ce sont les algues chara, de la famille des Characeae (cf Figure 2 , p.5).
1. Biologie de l'algue �etudi�ee
Voici quelques caract�eristiques biologiques de l'algue Chara [Wikip�edia] :
"Chara et charac�ees sont des plantes multicellulaires et branchues, caract�eris�ees par des cellules g�eantes(macroscopiques, d'une longueur de 1 �a 2 cm pour chaque cellule de la tige principale). Ces cellules sontg�en�eralement cortiqu�ees et chacune est constitu�ee d'une grande vacuole centrale, d'un endoplasme et du cy-toplasme qui contient un ou plusieurs noyau(x) et qui est anim�e d'un constant mouvement, dit de "cyclose".Cette cyclose est caract�eris�ee par une vitesse de ux au moins huit fois plus rapide (jusqu'�a 70 �m/s) que celleobserv�ee chez d'autres plantes, telle que l'�elod�ee. Ceci fait des charac�ees une int�eressante plante de laboratoirepour l'�etude du ph�enom�ene de cyclose.[...] Leur thalle [tige centrale] peut atteindre 120 cm de long. Elles n'ontpas de racines, mais se �xent dans le substrat (sable, s�ediment vaseux, gravier..) par des rhizo��des."
Apr�es leur tr�es proche a�nit�e g�en�etique avec les plantes vertes terrestres, l'int�eret essentiel de ces alguesvertes d'eaux douces est que l'"on observe facilement et nettement au microscope - �a l'int�erieur des cellulesg�eantes - le ph�enom�ene de cyclose (ou " streaming cytoplasmique "). On n'a jamais observ�e de cyclose plusrapide chez d'autres plantes."
Ainsi le choix de l'�etude de cette plante est justi��e aussi bien par ses propri�et�es g�en�etiques que par lapossibilit�e qu'elle o�re d'observer au microscope en temps r�eel le ph�enom�ene dit de cyclose en biologie.
L'aspect �etudi�e du point de vue de la biophysique, et auquel nous nous sommes int�eress�es du point devue de la mod�elisation/simulation num�erique durant ce stage, est le caract�ere anisotrope de la croissance d'unecellule lorsque sa vacuole (qui occupe 90 pour cent de l'espace cellulaire) se remplit d'eau et gon e.
Le ph�enom�ene de croissance spiral�ee ou croissance h�elico��dale observ�e chez les algues Chara est du �a lapr�esence d'une structure en treillis de �bres pectocellulosiques autour de la paroi primaire de chaque cellulesv�eg�etales ou cellules-souches, toutes issues d'un m�erist�eme c'est-�a-dire d'un meme centre de division cellulaire,et lesquelles, amoncel�ees les unes sur les autres, constitueront le tissu v�eg�etal de l'algue verte.
La croissance de la cellule, que l'on assimilera g�eom�etriquement �a un cylindre poss�edant une certaine�epaisseur au sein de laquelle sont dispos�ees ces �bres dont on supposera qu'elles forment un angle nul avecle plan transversal de ce cylindre, provient initialement d'une pression de pouss�ee interne en son sein appel�eepression de turgescence.
La pression de turgescence d'une cellule �a paroi s'explique par le ph�enom�ene de turgescence des cellules,durant lequel la vacuole de la cellule se remplit d'eau, grossit et ses membranes semi-perm�eables (ne laissantpasser que l'eau dans le cas de cellules v�eg�etales) se tendent, accordant de fait un certain accroissement ainsiqu'une certaine rigidit�e �a di��erentes parties de la plante telles que la tige et les feuilles notamment.
Les �bres contenues dans la coque cylindrique sont reli�ees entre elles par des mol�ecules appel�ees h�emicellulosesqui conf�erent une structure semi cristalline au treillis de micro �bres pecto-cellulosiques ainsi form�e.
Pour la mod�elisation physique, les �bres seront suppos�ees continues, c'est-�a-dire sans cassures le long du
4
Figure 2: Algue verte Chara , laboratoire M.S.C. , juillet 2017
p�erim�etre du cylindre, et dispos�ees, horizontalement donc, vers une meme direction en s�erie dans l'�epaisseur dela coque du cylindre.
Les �bres sont su�samment r�esistantes pour demeurer "incassables" au cours de la turgescence de lacellule, ce qui n'est pas le cas en revanche des mol�ecules jouant le role d' "attache" entre elles (h�emicelluloses).
De ce fait, le parall�elisme initial entre les micro �bres contenues la coque cylindrique ne sera pas constant,et c'est cela qui sera responsable de l'anisotropie observ�ee lors de la turgescence d'une cellule v�eg�etale Chara.
Les memes propri�et�es d'anisotropie et de croissance spiral�ee peuvent etre observ�ees chez d'autres esp�ecesv�eg�etales comme par exemple chez les champignons Phycomyces au niveau de leur sporangium (cf Figure 3).
5
Figure 3: un champignon Phycomyces, taille r�eelle : 10 - 15 cm environ (Source : Wikipedia)
6
2. Physique d'une cellule �a paroi
L'objectif principal de mon stage �etait de simuler num�eriquement en langage Python/Fenics la croissance dela paroi d'une cellule v�eg�etale Chara en se basant sur le mod�ele physique et les donn�ees num�eriques utilis�es dansun article r�ecent (2012) r�edig�e et co-�ecrit par trois sp�ecialistes en hyper�elasticit�e non lin�eaire et en plasticit�epour des probl�emes de biophysique tels que le notre : il s'agit de R.Huang, AA. Becker, et I.A. Jones, qui ontpubli�e ensemble dans le Journal of the Mechanics and Physics of Solids 60 (2012) l'article auquel nous nousr�ef�erons de mani�ere tacite pour chacun des r�esultats obtenus dans nos simulations num�eriques :
Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law
Les auteurs de cet article proposent un mod�ele hyper�elastique et viscoplastique ainsi qu'un sch�ema num�eriqueFEM (Finite Elements Metods) permettant de simuler la croissance d'une cellule �a paroi pectocellulosique d'unealgue Chara tout en tenant compte de la pr�esence de �bres .
Les r�esultats num�eriques qu'ils donnent �a la �n de l'article sont obtenus en utilisant le logiciel ABAQUSpuis sont compar�es avec les donn�ees exp�erimentales.
Le dessein poursuivi tout au long de mon stage �etait donc de programmer en langage Python pour Fenicschacune des �etapes (assez nombreuses) permettant d'acc�eder au sch�ema semi-implicite �nal puis de comparer num�eriquement �a chaque fois nos r�esultats avec ceux obtenus par les auteurs de l'article.
Mon travail de programmation durant ce stage s'est d�eroul�e essentiellement en deux �etapes :
� Dans un premier temps on simule num�eriquement le seul ph�enom�ene d'hyper�elasticit�e non-lin�eaire sur lacellule sans tenir compte des �bres, en testant notamment di��erentes m�ethodes num�eriques (m�ethodesPETSc) sur le logiciel Fenics avec di��erents maillages tridimensionnels grace au logiciel FreeFem++ .
� Puis on ajoute dans les formulations variationnelles du premier code la contribution du ph�enom�ene deviscoplasticit�e li�e �a la dynamique de la structure de �bres en treillis attach�ee autour de la cellule �a paroio�u intervient en plus un ot de d�eformation plastique dans les �equations d'�equilibre m�ecanique.
Malheureusement, je ne suis pas parvenu �a terminer cette seconde �etape car de nombreuses petites di�cult�estechniques li�es �a la syntaxe de Fenics (versions changeantes d'une ann�ee �a l'autre) sont venues s'ajouter, no-tamment lors du calcul tr�es important dans l'article des multiplicateurs de Lagrange (not�es � dans l'article) enchaque point du maillage de notre paroi (cf p.762, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones) , qui permettait d'obtenir la plupart desgrandeurs n�ecessaires pour l'impl�ementation num�erique �nale de cet article (cf p.770, Modeling cell wall growthusing �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Je tiens �a cette occasion �a remercier une fois de plus mes deux tuteurs de stage, Etienne COUTURIER etJulien DERR, pour l'aide pr�ecieuse qu'ils m'ont apport�e pour debuger certains codes di�ciles !
Les auteurs de notre article de r�ef�erence (Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones) proposent une formulation semi-implicite pourla r�esolution variationnelle par �el�ements �nis (FEM) d'�equations m�ecaniques provenant d'un mod�ele de plas-ticit�e appel�e mod�ele de d�ecomposition multiplicative d'une d�eformation plastique �nie, appliqu�ee surl'ensemble du domaine de la paroi (cylindrique) d'une cellule-souche Chara dans notre cas.
Le tenseur gradient de d�eformations F associ�e �a cette transformation s'�ecrit alors sous la forme suivante,appel�ee approche de Rodriguez :
F = Fe Fg
o�u Fe d�esigne la contribution �elastique de F responsable du mouvement rigide des �bres et du mat�eriau support,et o�u Fg est la d�eformation plastique r�esultant du processus de d�esagr�egation des �bres et de croissance de laparoi seulement.
7
Cette d�ecomposition du gradient de d�eformations F fait intervenir trois con�gurations de la structuremat�erielle B �etudi�ee :
B0 : la con�guration initiale au repos de BBt: une con�guration interm�ediaire de B
B t : la con�guration de B d�eform�ee �a l'instant t>0
On admet qu'il est possible d'�ecrire un syst�eme d'�equations d�eterministe tel que le processus�elastoviscoplastique de d�eformation du syst�eme mat�eriel B soit �equivalent �a la superposition d'une premi�ered�eformation entre l'�etat initial B0 et l'�etat interm�ediaire Bt, correspondant �a un ensemble de d�eformationssuccessives in�nit�esimales li�ees seulement �a la contribution plastique Fg, et d'une seconde d�eformation
uniquement due au ot �elastique Fe entre cet �etat interm�ediaire �ctif et l'�etat �nal r�eel Bt.
Le tenseur droit de d�eformation de Cauchy-Green , que l'on notera par abus de langage comme samatrice repr�esentative C, est donn�e par :
C = Ft F
Le tenseur gauche de d�eformation de Cauchy-Green , que l'on notera par abus de langage comme samatrice repr�esentative b, est donn�e par :
b = F Ft
D'apr�es ce qui pr�ec�ede, la partie �elastique de la matrice C correspond donc �a la d�eformation de l'�etat inter-m�ediaire Bt :
C = (Fe)tFe
(d'o�u la notation C)
Et, semblablement, la partie �elastique du tenseur gauche de d�eformation de Cauchy-Green est donn�ee par :
b = Fe (Fe)t
On d�e�nit par ailleurs le gradient de vitesse L par :
L = _F F�1
Compte tenu de la d�ecomposition initiale de Lee, on a :
L = _Fe(Fe)�1+ Fe _F
g(Fg)�1 (Fe)�1 = Le + Lg
On notera respectivement De,We les parties sym�etrique et antisym�etrique de la contribution �elastique Le ,puis Dg,Wg les parties sym�etrique et antisym�etrique de la contribution plastique Lg du tenseur L .
De fa�con semblable au cas du tenseur C, on d�e�nit les tenseurs gradients de vitesse plastique et �elastique surla con�guration interm�ediaire Bt :
Le= (Fe)�1 _F
e
Lg= _F
g(Fg)�1
Derechef on notera respectivement De,W
eles parties sym�etrique et antisym�etrique du gradient de vitesse
�elastique Le, puis D
g,W
gles parties sym�etrique et antisym�etrique du tenseur gradient de vitesse plastique L
g.
8
Les tenseurs vitesse de d�eformation plastique et �elastique sont donc donn�ees, sur la con�guration inter-m�ediaire Bt , par :
Dg= sym L
g=
(C Lg+ (L
g)t C)
2
De= sym L
e=
(C Le+ (L
e)t C)
2
Ci-dessus, C joue un role de m�etrique sur la con�guration interm�ediaire Bt .
Dans le mod�ele consid�er�e, les parties antisym�etriques n'interviennent pas et seront consid�er�ees comme nulles(structure semi-cristalline) .
En notant J le d�eterminant de F (J=detF), � le tenseur de contraintes de Cauchy sur B t, on note � le tenseurpression de Kirchlo� d�e�ni par � = J*�.
Pour d�e�nir g�eom�etriquement les �bres, les auteurs de l'article prennent d'abord un vecteur unitaire a0(X)
appartenant �a la sph�ere unit�e , puis son image a(X, t) par la d�eformation continument d�erivable F(X,t) =@
@X,
ce qui produit bien un champ de "vecteurs-�bres" :
a(X, t) = F(X,t) a0(X)
o�u X2 B0, est d�e�nie par x= (X,t)2B t, B0 �etant la con�guration initiale, B t �etant la con�guration �nale .
Les auteurs posent les notations A = a a , A0 = a0 a0 , �a = C:A0= tr(A) puis ~a =ap�a
( ~a. ~a =1 ),
qui est le vecteur directeur unitaire de la d�eformation associ�ee �a F.
Ils adoptent une d�ecomposition en 3 parties de la croissance de la cellule �a paroi : une extension isochoresans transformation irr�eversible des �bres, une dilatation volumique sans transformation irr�eversible des�bres , et en�n une contribution irr�eversible de distorsion des �bres .
On pose :
~A = ~a ~a
R�a = dev[ ~A] = ~A -1
3tr( ~A) I .
R�a est la direction principale selon laquelle s'e�ectue la distorsion des �bres, lors de la croissance de la paroiprimaire de la cellule, sur la con�guration Bt .
Son �equivalent R�a sur la con�guration interm�ediaire Bt est donn�e par :
R�a = A -1
3C
avec A = (Fe)t ~A Fe .
Puis on d�e�nit les deux variables isovolumes C et b , associ�ees �a la partie isochore de la contributionirr�eversible de distorsion des �bres dans le processus de croissance de la paroi, de la mani�ere suivante :
C = J�2=3
C , b = J�2=3
b
o�u J = detFe. On a bien en e�et : det C = det b = 1 .
Se basant sur les donn�ees d'�etudes exp�erimentales de tissus biologiques, les auteurs adoptent la d�ecompositionadditive de la fonction �energie libre sur la con�guration interm�ediaire Bt, en tant que somme des contribu-tions de dilatation volumique vol et d'extension isochore iso :
9
(J , C , A) = vol(J) + iso(I1, I2, I4, I5)
o�u A = a a, a = Fg a0 , I1 = tr C, I2 =1
2[(tr C)2 - tr (C)2] , I4 = C : A = �a , I5 = (C)2 : A
Dans cette mod�elisation de cellule �a paroi, la fonction �energie libre est donn�ee par la formule suivante :
(J , C , A) =1
2K (J - 1)2 +
1
2� (I1 - 3) +
K1
2K2[exp(K 2(I4 -1)
2) - 1] : (1)
o�u K, � sont des constantes li�ees �a la paroi de la cellule; et o�u K 1, K 2 sont des param�etres li�ees �a la r�eponse�elastique des micro-�bres.
Le premier et le second terme de l'�equation (1) correspondent �a la r�eponse hyper�elastique isotrope dela paroi de la cellule tandis que le troisi�eme terme provient de la dynamique de la structure semi-cristallinedes micro-�bres, dont l'agencement (la longueur des "attaches" et le pourcentage d' "attaches cass�ees" dans un�el�ement volumique de r�ef�erence sont d�ecrits respectivement par les param�etres l et � dans l'article) est obtenueen partant d'une loi de distribution gaussienne, not�ee p(l) et d�ecrivant presque surement la longueur des"attaches" entre les �bres lors du processus de croissance de la paroi primaire (cf p.766, Modeling cell wallgrowth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Sur la con�guration interm�ediaire Bt , le second tenseur de Piola-kirchlo� est donn�e par :
S = 2@
@C
Le tenseur vitesse de d�eformation �elastique (elastic tangent modulus), not�e c dans cet article, est donn�e par :
c = 4@2
@(C)2
Sur la con�guration r�eelle et �nale B t , le tenseur de Cauchy � et le tenseur (d'ordre 4) vitesse de d�eformation�elastique c sont alors donn�es par les relations suivantes :
� = J�1
Fe S (Fe)t
[c]ijkl = J�1
FeiI FejJ FekK FelL [ c ]IJKL
La pression de Kirchlo� est not�ee � = J �. Sa d�eriv�ee de Lie, not�ee �egalement Lev� , est donn�ee par :
Lev� = _� - Le � - � (Le)t (d�e�nition)
On a alors : Lev� = Fe _S (Fe)t = c : De
**********************************************************************************************
Brefs rappels de M�ecanique des Milieux Continus (M.M.C.) :
Dans le rep�ere cart�esien < = (O, �!e1 ;�!e2 ;�!e3) on consid�ere, �a l'instant t=0, un solide 0 suppos�e connexe et aurepos. Chaque point M0 de ce solide poss�ede, �a l'instant t=0, dans la base cart�esienne B = f�!e1 ;�!e2 ;�!e3g
associ�ee au rep�ere < les coordonn�ees Lagrangiennes (X1, X2, X3) .
On appelle t le solide, �egalement suppos�e connexe, �a l'instant t>0 .Soient � l'application transformant 0 en t et Mt=�t(M0) le point image du point M0 par �t
appartenant �a t=�t(0).
On attribue �a���!OMt les coordonn�ees (x1(t), x2(t), x3(t)), appel�ees coordonn�ees Eul�eriennes du point
Mt 2 t �a un instant t>0 .
On note�!U=
����!M0Mt le vecteur d�eplacement de coordonn�ees (x1(t)- X1, x2(t) - X2, x3(t) - X3) pour t>0 .
10
On note F le tenseur gradient de d�eformations du vecteur U par rapport aux coordonn�ees LagrangiennesX1, X2, X3 :
F =@(OMt)i@Xj
�!ei �!ej
avec sommation implicite (convention d'Einstein) sur les indices i,j2f1,2,3g.
On note E le tenseur de d�eformations de Green-Lagrange d�e�ni par :
E = 12*(F
t*F - I) = 12*(C - I)
o�u C = Ft * F est le tenseur de dilatations de Cauchy-Green droit et I = �ij�!ei �!ej est le tenseur
identit�e.On �ecrit souvent le tenseur de Green-Lagrange sous la forme suivante :
E = 12*((rX
�!U)t*rX
�!U + (rX
�!U)t + rX
�!U) = 1
2*(rX�!U)t*rX
�!U + "
o�u " est appel�e tenseur de d�eformations lin�earis�e, et avec rX d�esignant l'op�erateur vectoriel r de d�erivationpar rapport aux coordonn�ees Lagrangiennes X1, X2, X3 . En e�et, on a :
F = I + rX�!U par d�e�nition de
���!OMt =
���!OM0 +
����!M0Mt =
���!OM0 +
�!U avec :
�!U = Ui * �ij
�!ei �!ejrX�!U =
@Ui@Xj
�!ei �!ej
Sym�etriquement on d�e�nit le tenseur de dilatations de Cauchy-Green gauche par :
b = F* Ft
On appelle tenseur de Euler-Almansi le tenseur e d�e�ni par :
e = 12*( I - b
�1) = 12*( I - (F
t)�1 * F�1)
D�ecomposition polaire
Si la matrice F associ�ee au tenseur F n'est pas une matrice singuli�ere (i.e. non inversible) alors il existe uneunique matrice orthogonale Q, il existe deux matrices sym�etriques d�e�nies positives U et V (uniques �egalement)telles que :
F = Q*U = V*Q
De ce fait on obtient, sous l'hypoth�ese d'inversibilit�e (l'�elasticit�e pure �etant une transformation r�eversible) dela matrice gradient de d�eformations, le r�esultat suivant :
E = 12*(U
2 - I) et e = 12*(I - (V
�1)2)avec U, V sym�etriques d�e�nies positives
U2 = C , V2 = bF = Q*U = V*QQ orthogonal
Premier tenseur de Piola-Kirchlo�
� = J*�*(F�1)t
Il v�eri�e en e�et :
�(�!n0)*dS0 = �(�!nt)*dSt
11
o�un0 est la normale unitaire sortante �a un �el�ement surfacique dS0 de 0, �a l'instant initial t=0nt est la normale unitaire sortante �a �a un �el�ement surfacique dSt de t , �a l'instant t>0
Second tenseur de Piola-Kirchlo� :
s = F�1 * �Int�eret du second tenseur de Piola-Kirchlo� :
s est un tenseur sym�etrique(r�e�el) =) s est diagonalisable
Pression de Piola-Kirchlo� :� = J * �
Mod�ele de Saint Venant-Kirchlo�
Il s'agit simplement d'une extension du mod�ele lin�eaire �elastique de Hooke aumod�ele hyper-�elastique non-lin�eaire en substituant " par E et � par le second tenseur de Piola-Kirchlo� s dans la loi de Hooke lin�eairepour un mat�eriau homog�ene isotrope :
s = �*tr(E)*I + 2*�*E
o�u � et � sont les coe�cients de Lam�e , � correspondant au module de cisaillement de la d�eformation dumat�eriau. Ils s'expriment en fonction du module de Young E et du coe�cient de Poisson � par :
� =� � E
(1 + �) � (1� 2 � �)� =
E
2 � (1 + �)
Chaque mat�eriau est caract�eris�e par le couple (E, �) .
Le tenseur de densit�e �energ�etique d�e�ni par :
W(E) =1
2*E:D:E =
1
2*E:[�*I+2*�] :E =
�
2*[tr(E)]2+�*tr(E2)
donne alors :
s =@W(E)
@E
**********************************************************************************************
On a �egalement les relations suivantes :
@J
@C=
1
2J (C)�1 : (2)
@C
@C=
1
2J�2=3
[I-1
3C � (C)�1] : (3)
o�u I est le tenseur d'ordre 4 donn�e par :
(I)IJKL =1
2(�IJ �KL + �IL �JK)
Ce r�esultat provient de l'�egalit�e suivante :
(@(C)�1
@C)IJKL =
�12
((C)�1IK (C)�1JL + (C)�1IL (C)�1JK)
Les �egalit�es (2) et (3) permettent d'obtenir les expressions �nales de � , S, c et c donn�ees dans la Table 1de l'article (cf p.757, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law,R.Huang, AA. Becker, I.A. Jones).
La force e�cace inh�erente �a la contribution irr�eversible de distorsion des �bres est donn�ee par :
12
��a = � : R�a , pour la con�guration B t
��a = S : R�a , pour la con�guration Bt
Les tenseurs associ�es sont :
��a := ��a~A
S�a =��a�a
A
Pour la partie dilatation volumique sans transformation irr�eversible des �bres , on introduit lestenseurs suivants :
�A = � - f� : ~Ag ~A , sur B t
SA= S -
1
�2a
([C S C]:A) A , sur Bt .
La force e�cace associ�ee �a la partie dilatation volumique sans transformation irr�eversible des �bres est alorsdonn�ee par :
�vol = tr(�A) , sur B t .
�vol = Tr( SA) = C : S
A, sur Bt .
(l'op�erateur trace est li�e, en m�ecanique des milieux continus, �a la m�etrique de la con�guration)
Les tenseurs asoci�ees sont :
�vol :=1
3�vol I , sur B t.
Svol =1
3�vol (C)
�1 , sur Bt .
En�n pour la partie extension isochore sans transformation irr�eversible des �bres , on introduit :
�dev = � -3
2[�vol + ��a ] = � -
1
2[ tr(�A)*I+3*(� : R�a)*
~A], sur B t .
Sdev
= S -3
2[Svol + S�a ] = S -
1
2[ tr( S
A)* (C)�1 +
3
�a*(S : R�a )* A] , sur Bt .
Remarque : Tr(Sdev
) = 0 = tr(�dev).
�dev et Sdev
sont appel�es tenseurs de contraintes de Spencer .
En r�esum�e, les trois forces intervenant dans la d�ecomposition de la croissance de la cellule �a paroi adopt�eepar les auteurs de l'article de r�ef�erence seront, sur la con�guration r�eelle B t, les tenseurs ��a , �vol et �
dev, et,
de mani�ere associative, sur la con�guration interm�ediaire �ctive Bt, ce seront les tenseurs S�a , Svol et Sdev
.
Les trois parties du m�ecanisme de croissance de la cellule �a paroi d�ecrites plus haut sont suppos�eesind�ependantes.
Les auteurs d�e�nissent deux entit�es physiques, appel�ees invariants du tenseur de Spencer, tr�esd�eterminantes dans le mod�ele th�eorique de cet article car elles permettent �a chaque fois de calculer, en touspoints de la paroi, la valeur de la fonction seuil de plasticit�e pour chaque partie de la croissance.
Il s'agit de deux grandeurs scalaires, d�e�nies sur B t par :
~J1 = (�dev.~a). (�dev.~a)~J2 = �dev : �dev
ou, de mani�ere �equivalente, d�e�nies sur Bt par :
J1 =1
�ak SdevCSdev ka
J2 = Tr(Sdev
CSdev
)
13
o�u
Tr est l'op�erateur trace d�e�ni sur Bt par Tr(.) = C : (.)k (:) ka est une fonction d�e�nie sur Bt par k (:) ka = [C(:)C ] : A
La fonction seuil relative �a la partie isochore de la croissance est not�ee fdev sur Bt et ~fdev sur B t.
Elle est d�e�nie par :
fdev =J1Y 21
+J2Y 22
- (1+h(�)) , sur Bt
~fdev =~J1Y 21
+~J2Y 22
- (1+h(�)) , sur B t
o�u Y1 et Y2 sont des param�etres de seuil caract�eristiques de la paroi, et o�u h est une fonction scalaire appel�eefonction de durcissement d�ependant du param�etre de durcissement ou param�etre d'�ecrouissage, vucomme tel �a l'�echelle macroscopique et not�e � dans l'article .
La fonction seuil relative �a la partie dilatation volumique de la croissance est not�ee fvol sur Bt et ~fvol surB t.
Elle est d�e�nie par :
fvol = I2 - (Y3 + hvol) , sur Bt~fvol = I2 - (Y3 + hvol) , sur B t
o�u Y3 et hvol sont des param�etres similaires �a Y1, Y2 et h ; et o�u I2 et I2 sont des invariants d�e�nis de la
meme fa�con que l'invariant, vu plus haut, I2 (cf p.10) hormis le fait qu'ils d�ependent respectivement de �A et
de SA(cf �egalit�e (47), p.761, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive
law, R.Huang, AA. Becker, I.A. Jones).
En�n la fonction seuil associ�ee �a la contribution irr�eversible de distorsion des �bres est not�ee, toujours dansl'article, f�a sur Bt et ~f�a sur B t.
Elle est d�e�nie par :
f�a = ��a - (Y4 + h�a) , sur Bt~f�a = ��a - (Y4 + h�a) , sur B t
o�u Y4 est un param�etre de seuil caract�eristique de la paroi , et o�u h�a est une fonction de durcissement,�egalement bien pr�ecis�ee dans l'article.
Nota bene 1 : la premi�ere fonction seuil fdev (ou ~fdev) d�e�nie plus haut est a-dimensionnelle .
Nota bene 2 : la ligne de niveau fdev = 0 est l'�equation d'une ellipse dans le plan cart�esien (OXY), si l'on
se ram�ene aux variables X=pJ1 et Y=
pJ2 dans l'expression de fdev divis�ee par (1+h(�)) [ h est une fonction
positive ou nulle par d�e�nition] .
14
Par suite on d�e�nit, pour chacune des trois parties ind�ependantes du processus de croissance de la paroi,une fonction scalaire appel�ee fonction de surcharge :
� Les fonctions de surcharge associ�ees aux parties dilatation volumique et distorsion des �bres de la croissancede la cellule sont not�ees respectivement �vol et ��a .
Chacune correspond simplement �a la valeur e�cace de la fonction seuil correspondante :
�vol =1
2< fvol >
��a =1
2< f�a >
avec < x > =1
2(x+j x j) , 8x 2 R (si x est n�egatif sa valeur e�cace est nulle).
� En revanche, la fonction de surcharge associ�ee �a la phase de croissance isochore, not�ee �dev, ne d�ependplus explicitement de la fonction seuil correspondante fdev.
En reprenant la remarque du Nota bene 2, elle correspond en e�et g�eom�etriquement �a la distance,
not�ee � dans l'article, d'un point J, de coordonn�ees (pJ1,pJ2) dans le rep�ere cart�esien (O;
pJ1;pJ2),
�a l'ellipse ou �a la ligne de niveau d'�equation fdev = 0 dans ce rep�ere (cf x4.3., p.761, Modeling cell wallgrowth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Par ailleurs, le fait que le tenseur de contraintes de Spencer Sdev
d�ecrive physiquement un ph�enom�ened'extension isochore permet, par sym�etrie axiale de la con�guration initiale des �bres, de se restreindre
au cas o�u le point J est contenu dans le quart de plan SJ = fpJ1 � 0;
pJ2 � 0g du plan contenant
l'ellipse d'�equation cart�esienne :
(pJ1)
2
(Y1 �p1 + h(�))2
+(pJ2)
2
(Y2 �p1 + h(�))2
= 1
(cf Fig. 4., p.761, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutivelaw, R.Huang, AA. Becker, I.A. Jones)
De fait, la valeur de cette distance � est obtenu en r�esolvant le probl�eme de minimisation sous contraintesuivant :
�(�, J) = min~�2SJ
(~�(~�, J))
avec ~�= (~�1, ~�2) solution de fdev(~�, �) =~�21Y 21
+~�22Y 22
- (1+h(�)) = 0 : (4)
o�u ~� =q(J � ~�):(J � ~�) , 8~� 2 SJ ;
et o�u � d�esigne le point du quart d'ellipse (fdev = 0) pour lequel le minimum est atteint.
Les auteurs de l'article introduisent alors un multiplicateur de Lagrange , not�e �, qui permet de ramener le probl�eme (4) �a la forme d'un second probl�eme de minimisation, �egalement, mais sans contrainte:
�(�, J) = min~�2SJ
(~�(~�, J) - � fdev(~�, �)) : (5)
� est l'une des solutions r�eelles de l'�equation d'ordre 4 suivante :
(1+h) (� - Y21)2 (� - Y2
2)2 - J2 Y
22 (� - Y
21)2 - J1 Y
21 (� - Y
22)2 = 0 : (6)
15
Cette solution r�eelle (si elle existe) doit, par rapport aux autres solutions r�eelles (si elles existent aussi),donner la plus petite valeur positive ou nulle de la fonction distance �, qui est alors donn�ee par :
�(�, J) = - �
sJ1
(�� + Y 21 )
2+
J2(�� + Y 2
2 )2
: (7)
Initialement , ce multiplicateur de Lagrange � est en fait d�e�ni comme un nombre r�eel �etant strictementinf�erieur aux carr�es des param�etres de seuil caract�eristiques de la paroi, Y1 et Y2, au cours de l'�etape"extension isochore" de la croissance :
� < Y21
: (8)� < Y2
2
Il est d�e�ni de telle sorte que le point � de coordonn�ees (
pJ1
(1� �=Y 21 )
2;
pJ2
(1� �=Y 22 )
2) soit bien le projet�e
du point J , de coordonn�ees (pJ1,pJ2), sur cette ellipse .
En e�et, si � ne satisfait pas (8), alors � n'est plus dans le "bon quart" de l'ellipse (cf Fig. 4., p.761,Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA.Becker, I.A. Jones) , et r�eciproquement.
Remarque : � est homog�ene �a Y 21 et Y 2
2 (il s'exprime donc en Pa2 dans le syst�eme U.S.I.).
En injectant les coordonn�ees de � dans l'�equation fdev = 0 puis dans l'expression de ~� , on en d�eduitalors que � doit satisfaire l'�equation (6) et que � est bien donn�ee par la relation (7) .
Remarque : � = 0 () � = 0 .
En e�et, les cas Y1 = 0 ou Y2 = 0 n'existent pas physiquement, pour des cellules v�eg�etales du moins.
Par ailleurs, le cas o�u l'�equation (6) poss�ede uniquement des racines complexes n'est pas trait�e danscette s�equence de calcul de l'article, raison pour laquelle on l'assimilera tacitement au cas � = 0.
La fonction de surcharge associ�ee au ph�enom�ene physique d'extension isochore lors de la croissancede la paroi primaire, est alors d�e�nie de la mani�ere suivante :
�dev = 0 si fdev � 0�dev = �m si fdev > 0
o�u m est appel�e taux de sensibilit�e.
Des �etudes exp�erimentales montrent que la vitesse d'�elongation d'une cellule Chara �evolue lin�eairementavec sa pression de turgescence si on reste dans un intervalle de pressions raisonnable (0.35 - 0.6 MPa).C'est pourquoi dans le cadre de ce mod�ele et en restant dans cet intervalle de pressions, le taux de sensibilit�em sera pris �egal �a 1 (cf x 5.1.1., p.772, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Le ot d'�ecoulement plastique est �nalement donn�e par la formule suivante :
Dg= _�
@�dev@S
+ _�vol@�vol@S
+ _��a@��a@S
: (9)
16
o�u _�, _�vol, _��a sont des taux d'�ecoulement viscoplastique e�cace d�e�nis par :
_� =�dev�
_�vol =�vol�=�1
_��a =��a�=�2
et o�u � est la viscosit�e des micro-�bres.
La viscosit�e � est fonction de la temp�erature T selon la loi d'Arrhenius :
� = �0 exp(-Q/R(T-T0))
Les valeurs num�eriques pour le mod�ele et les simulations sont : T0 = 0�C; R = 8.314472 J/K.mol ; Q = 50*R;�0 varie entre 10
10 et 1013 Pa.s selon les cas d'�etudes de croissance (cf x 5.2., p.774, Modeling cell wall growthusing �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Toutefois les auteurs de l'article donnent en annexe (cf Appendix B, p.781, Modeling cell wall growthusing �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones) une m�ethodede calcul permettant d'estimer la viscosit�e � ainsi que les param�etres de seuil dynamiques de la paroi �a l'instantinitial, pour les simulations num�eriques, (1+h(t=0))Y1 et (1+h(t=0))Y2 (qui correspondent en r�ealit�e auxvaleurs des param�etres de seuil statiques Y1 et Y2) en partant de la solution analytique dans le cas simple d'uned�eformation �elastoviscoplastique in�nit�esimale ( _�vol = _��a = 0).
Dans le sch�ema num�erique �nal de l'article, les trois directions d'�ecoulement plastique intervenantdans l'�egalit�e (9) associ�ees aux trois parties ind�ependantes du m�ecanisme de croissance de la cellule Chara,d�ecrites plus haut, sont renomm�ees de la mani�ere suivante :
symR�=@�dev@S
R�vol =
@�vol@S
R�a =@��a@S
Les expressions formelles des directions symR�et R
�vol sont donn�ees directement par :
R�vol = fTrS
Ag Rvol - CSAC : (10)
avec Rvol = C - A : (11)
symR�= �3 [A �
dev+ (A �
dev)t] + 4 �4 sym�
dev: (12)
o�u �3 et �4 sont des fonctions d�e�nies, dans le cas m = 1, par :
�3 =@�
@J1+ #1
@�
@�
�4 =@�
@J2+ #2
@�
@�
(cf �egalit�e (67), p.763, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law,R.Huang, AA. Becker, I.A. Jones)
17
et avec :
�dev
= Sdev
C
Les fonctions �3 et �4 sont exprim�ees dans l'Appendix A de l'article directement �a partir des param�etresintervenant dans la fonction de surcharge �dev (cf p.12) i.e. �, �, J1, J2, Y1 et Y2 (cf Eq. (A2), (A3) et (A5),Appendix A, p.779, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law,R.Huang, AA. Becker, I.A. Jones) .
Rappel : souvenons-nous (dans l'�egalit�e (10)) que l'op�erateur trace not�e Tr (Tr(.) = C :(.)) sur la
con�guration �ctive Bt est di��erent de l'op�erateur trace, not�e tr, sur la con�guration r�eelle B t (tr(.) = I : (.)) .
A partir de l'�egalit�e (12), on on d�eduit alors le tenseur de ux viscoplastique, not�e symR� dans l'article,sur la con�guration �nale B t :
symR� =@�dev@�
= ((Fe)t)�1@�dev@S
(Fe)�1 = ((Fe)t)�1 symR�(Fe)�1 : (13)
Rappel : le passage de la con�guration interm�ediaire Bt �a la con�guration �nale B t s'e�ectue en e�et, dans lad�e�nition de ce mod�ele de plasticit�e, seulement via la contribution �elastique Fe.
Dans la section 4.4. de l'article, une expression de ce tenseur est donn�ee �a partir de �3, �4, �dev, ~A :
symR� = �3 ( ~A �dev + �dev ~A) + 2 �4 �dev : (14)
(cf Eq. (66) et (68), p. 763, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplasticconstitutive law, R.Huang, AA. Becker, I.A. Jones) .
Semblablement, la direction de dilatation volumique R�vol sur la con�guration B t est donn�ee par :
R�vol =
@�vol@�
= ftr�Ag Rvol - �A : (15)
avec Rvol = I - ~A
Pour de tr�es petites d�eformations plastiques, ce qui sera le cas dans nos simulations num�eriques, le taux ded�eformation plastique e�cace des micro-�bres _��a devient n�egligeable.
Les taux de d�eformation volumique _�vol et isochore _� sont alors de plus reli�es entre eux par un facteurhomoth�etique, not�e � :
_�vol = � _�
Ce ratio � provient de la condition de conservation de l'�epaisseur de la paroi au cours de la croissance :
n.Dg.n = 0 , sur B t
n.Dg.n = 0 , sur Bt
o�u :
n = F n0 est le vecteur normal unitaire (sortant) �a la paroi B t
n0 est le vecteur normal unitaire (sortant) �a la paroi dans sa con�guration initiale B0
n = Fg n0 = (Fe)�1 n est le vecteur normal unitaire (sortant) �a la paroi Bt
En injectant cette condition dans l'�equation (9), on obtient :
� = -n:symR
�:n
n:symR�vol:n
18
Par suite, on a donc :
Dg = Lg = _Fg(Fg)�1 = _� symR
�+ _�vol R
�vol =
_� (symR�+ � R
�vol) =
_� R
o�u R = symR�+ � R
�vol
D'o�u l'on d�eduit l'expression suivante, r�e-utilis�ee dans l'algorithme �nal de l'article :
_Fg= _� R Fg : (16)
Par ailleurs, dans l'expression de fdev (cf p.10), on prendra h(�) = �, tel qu'il est d�e�nici-dessous (�equation (17)) .
La fonction de durcissement � doit alors v�eri�er la relation suivante, appel�ee loi de durcissement enextension isochore :
d�
dt= _� = (h1+h2 �) _� : (17)
Pour obtenir les expressions exactes de h1 et h2 , il faut partir de la loi temporelle suivie par le param�etred'�ecrouissage � (cf Eq. (80) �a Eq. (86), p.766-767, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones ).
Valeurs num�eriques : h1 = 20.6 et h2 = 20 , pour la plupart des cas d'�etude (cf x5.2, p.774, Modeling cellwall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones),hormis les cas o�u le temps de croissance devient tr�es grand (passant de quelques minutes �a 20 heures, parexemple, dans le case study 5 ), et o�u seule la temp�erature T varie, dans le case study 3.
Pour les simulations interm�ediaires, on peut toutefois adopter le mod�ele viscoplastique uni-axial tel qu'ilest propos�e par les auteurs de l'article dans la section 4.5.3. (cf x Eq. (87)., p.767, Modeling cell wall growthusing �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Impl�ementation num�erique du ot plastique :
Le sch�ema num�erique propos�e �a la �n de l'article permet de simuler la croissance de la paroi d'une celluleChara, de donner une estimation de son ot plastique ��n ainsi que de son taux de dilatation volumique _�vol�a chaque pas de temps �t = tn+1 - tn . Il s'agit d'un algorithme semi-implicite :
� Tout d'abord, on �xe un incr�ement de d�eplacement u pour obtenir F �a l'instant tn+1:
n+1 = n + u
Fn+1 =@ n+1@X
� Puis connaissant Fn, Fn+1, Fgn, Sn, �n et �t (le pas de temps) , on �ecrit la s�equence suivante :
Rn = symR�n + ~�n R
�vol(tn)
Fgn+1 = (1+��nRn) F
gn
Fen+1 = Fn+1 (F
gn+1)
�1
19
Cn+1 = (Fen+1)
t Fen+1
an+1 = Fgn+1 n0
�n+1 = �n + (h1+h2 �n) ��n : (*)
Sn+1 = 2@(Cn+1;An+1)
@C
��n = �t�dev(Sn+1;an+1; �n+1)
�: (**)
_�vol(tn+1) = ~�n��n�t
o�u Xn d�esigne la valeur d'une fonction quelconque X �a l'instant t = tn = n*�t , pour n appartenant �a N.
L'inconnue principale de cet algorithme est donc le ot plastique ��n, qui devient ainsi le param�etrede d�erivation permettant, �a chaque �etape n, de r�ecup�erer le tenseur D
g(tn+1) ainsi que le durcissement
�n+1 (cf �egalit�e (*)) en r�esolvant un syst�eme d'�equations non lin�eaire.La m�ethode de r�esolution employ�ee par les auteurs de l'article est la m�ethode de Newton-Raphson.
Nota bene : les auteurs notent de mani�ere un peu incoh�erente R�n le tenseur qu'ils nomment symR
�n juste
auparavant. En e�et, seule la partie sym�etrique deR�n intervient alors dans le tenseur (sym�etrique) d'�ecoulement
plastique �nal Dg= _� R, qu'on veut connaitre apr�es chaque pas de temps �t (cf Eq. (99), p.770, Modeling cell
wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones).
Pour n2 N, l'utilisation de la m�ethode de Newton-Raphson et le calcul de Rn n�ecessitent �a chaque �etape n,
d'apr�es l'�egalit�e (**), le calcul de la d�eriv�ee partielle@�
@��n, lequel est donn�e de mani�ere tr�es d�etaill�ee en annexe
de l'article (cf Appendix A, p.779, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplasticconstitutive law, R.Huang, AA. Becker, I.A. Jones).
On peut en d�eduire ensuite la valeur, �a l'instant t = tn+1, de la d�eriv�ee@�vol@��n
via la relation suivante :
_�vol =�vol�=�1
= � _� = ��dev�
3. Mod�elisation num�erique de la cellule �a paroi
Dans l'article auquel nous nous sommes r�ef�er�e tout au long du stage, la paroi de la cellule Chara estassimil�ee g�eom�etriquement �a celle d'un cylindre de longueur L0 = 4 mm, de rayon int�erieur Rmin = 0.5 mm,
d'�epaisseur � = 10 �m, et de rayon ext�erieur Rmax = Rmin + � = 0.51 mm .
Le cylindre est suppos�e, dans l'article, ouvert �a ses deux extr�emit�es , i.e. en z =L02
et en z = -L02
, z d�esignant
la 3�eme coordonn�ee associ�ee au syst�eme de coordonn�ees polaire.Nous avons cependant �et�e contraint de d�eroger �a cette hypoth�ese dans notre maillage tridimensionnel, r�ealis�edans mon stage via le logiciel FreeFem++, en rajoutant deux calottes sph�eriques (de rayon Rmin et d'�epaisseur�) aux deux extr�emit�es du cylindre pour que converge la m�ethode PETsc appel�ee newtontr ("newton with trustregion"), optimale pour ce probl�eme, sur le logiciel de calcul scienti�que employ�e dans ce projet : le logicielFenics .La section de la paroi du cylindre est S = � (R2
max - R2min) .
La pression de turgescence, not�ee P, de la cellule B est appliqu�ee de mani�ere uniforme et constante sur l'ensemblede son bord @B, qui correspond au bord du cylindre de hauteur L0 , de rayon Rmin et d'aire :
20
2*�*(R2min + L0*Rmin)
La section de la cellule cylindrique priv�ee de sa paroi est Sint = � R2min .
De ce fait, la pression �equivalente exerc�ee sur les deux extr�emit�es libres de la paroi de la cellule cylindriquesera �egale �a la meme pression P multipli�ee par un rapport d'homoth�etie, �egal au rapport des deux sections :
~P = P*SintS
= P*R2min
(Rmin + �)2 �R2min
Dans l'�egalit�e ci-dessus, un d�eveloppement limit�e �a l'ordre 1 en (�/Rmin) au d�enominateur donne alors :
~P � P*Rmin
2 � �
Dans la mod�elisation g�eom�etrique adopt�ee par les auteurs de l'article, on substitue donc P par ~P sur chacunedes deux sections "libres" de la paroi cylindrique.
Les conditions de bord pr�esentent ainsi des propri�et�es de sym�etrie (radiale, i.e. par rotation autour de l'axe ducylindre, et longitudinale, i.e. par rapport au plan z=0) qui sont remarquables puisqu'elles permettent de pouvoirrestreindre les simulations num�eriques, ainsi que les auteurs ont proc�ed�e pour chacune des simulations donn�eesdans l'article, �a l'�echelle par exemple d'un huiti�eme du cylindre (ils ne consid�erent que la moiti�e "sup�erieure"d'un quart du cylindre initial). La partie �elastique de la d�eformation, qui correspond �a un "gon ement"hyper�elastique isotrope de la cellule, est en e�et, comme nous le verrons plus tard, celle d'une d�eformationhomog�ene, ce qui signi�e que la d�eformation (li�ee uniquement au mouvement rigide de la paroi) associ�ee estuniforme sur l'ensemble de la coque cylindrique soumise au ph�enom�ene de turgescence.
Par ailleurs, rappelons que l'agencement des �bres, dispos�ees horizontalement et espac�ees r�eguli�erement ausein de la paroi, respecte les memes propri�et�es de sym�etrie par hypoth�ese.
Les r�esultats des simulations num�eriques, r�ealis�ees �a partir du logiciel priv�e ABAQUS, sont donn�ees dansla section 5.2. de l'article. Elles utilisent toutes le meme maillage tridimensionnel d'un huiti�eme de la coquecylindrique initiale (de longueur L0 = 4 mm), �a savoir un maillage comportant 600 �el�ements quadratiques(pav�es de R3) avec 20 n�uds d'�evaluation sur chaque �el�ement �ni.
(cf x 5., p. 771-772, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law,R.Huang, AA. Becker, I.A. Jones).
Sur le logiciel gratuit Fenics, nous avons pris �a la fois le parti et le pari d'adopter un maillage non pas enpav�es mais en t�etra�edres, avec 10 n�uds d'interpolation pour chaque �el�ement �ni (�el�ements P2).
Les librairies (PETsc) et options (�c options) auxquelles se rattache ce logiciel semblaient en e�et nepouvoir ni o�rir en tant que mailleur ni adopter en tant que solveur num�erique dans leurs versions actuelles le
type d'�el�ement �ni utilis�e sur ABAQUS par les auteurs de l'article.
Pour ces raisons l�a, nous avons choisi le maillage 3D d'une paroi cellulaire Chara donn�e enANNEXE 1, r�ealis�edonc sur le logiciel FreeFem++ , con�cu express�ement pour les m�ethodes de r�esolutions d'EDP par �el�ements �nis(m�ethodes FEM ).
Le maillage �nal obtenu (cf Figure 4), Th3�nhole, est sauvegard�e dans le �chier bacterie.mesh.
Pour la comparaison num�erique entre le gon ement hyper�elastique de la cellule et celui de la sph�ere , on ser�ef�erera au maillage sphere cavite.mesh construit dans le �chier Sphere cavite.edp : le maillage de la sph�ereest formellement presque le meme que dans le �chier adapted bacterie.edp, hormis les d�e�nitions de f1, f2 etf3 (on doit simplement y soustraire les termes de la r�egion ((x<L) && (x>-L)) ).
Notations : Les �chiers de la forme �lename.mesh sont des �chiers FreeFem++ tandis que ceux appel�es�lename.msh sont des �chiers convertis en codage msh via l'�editeur gmsh.
21
Cette conversion est n�ecessaire car on doit utiliser des maillage en code xml dans les simulations sur Fenics.Les maillages �lename.msh sont alors convertis en �chiers �lename.xml, grace �a la commande dol�n-convertsur UNIX (pour Ubuntu ) suivante :
dol�n-convert �lename.msh �lename.xml
On peut bien sur utiliser bon nombre d'options suppl�ementaires de FreeFem++, comme celles permettant dedonner des informations sur le maillage 3D pr�ec�edent Th3�nhole.On peut demander par exemple les coordonn�ees des sommets/points milieux (pour des �el�ements P2) d'untriangle (ou d'un t�etra�edre) ainsi que l'indice de ce triangle via la commande suivante :
int nbtriangles = Th3�nhole.nt ;
// Th3�nhole.nt est le nombre de triangles du maillage Th3�nhole .
for (int i=0; i < nbtriangles; i++)for (int j=0; j < 3; j++)
cout << i << j << "Th3�nhole[i][j] = " << Th3�nhole[i][j] << "x =" << Th3�nhole[i][j].x<< ", y = " << Th3�nhole[i][j].y << ", label = " << Th3�nhole[i][j].label << endl;
Th3�nhole(i) renvoie les coordonn�ees du sommet/point milieu i .Th3�nhole[k] renvoie les sommets/points milieux �etant sur le triangle k.Th3�nhole.nv renvoie le nombre de points d'�evaluation du maillage Th3�nhole.indice = Th3�nhole(0.505,0,0).nuTriangle donne le label ou l'indice du triangle contenant le point (0.505,0,0).Th3�nhole[indice].area donne l'aire de ce triangle .
(cf �chier info mesh adapted bacterie.edp)
Si on appelle Tk le triangle d'indice k dans le maillage Th3�nhole, alors le diam�etre maximal hh[ Th3�nhole],d�e�ni par Th3�nhole = maxfdiam(Tk)jTk 2 Th3�nholeg, est donn�e sur FreeFem++ via la commande suivante:
Vh hh = hTrianglecout << "hhmax = " << hh[].max << endl; : (18)
o�u Vh d�esigne l'espace discret d'�el�ements �nis, d�e�ni via la fonction fespace de FreeFem++, sur lequel doitetre projet�ee la solution recherch�ee du probl�eme variationnel consid�er�e.
Dans notre cas, ce sera l'espace Lagrangien des �el�ements �nis soit P1 soit P2, selon les simulations,continues sur le maillage Th3�nhole, et qui se d�eclare de la mani�ere suivante sur FreeFem++ :
fespace Vh(Th3�nhole, P1) , dans le cas P1 .fespace Vh(Th3�nhole, P2) , dans le cas P2 .
Dans le programme du �chier adapted bacterie.edp, la contrainte imposant un volume maximal pour chaquet�etra�edre �egal �a 0.001, provient du d�eterminant de la transformation T associ�ee au changement de m�etrique,auquel on impose de valoir 0.1, de telle sorte que tout triangle image Tk 2Th3�nhole satisfasse la conditionsuivante, appel�ee condition de maillage non d�eg�en�er�e :
�(Tk)
diam(Tk)� �
o�u � est r�eel strictement positif ; diam(Tk) = supfjx� yj;x; y 2 Tkg ; �(Tk) = maxbouleB�Tk(diam(B)).
En imposant un rapport d'aires de 0.1 entre Tk et Tk, on v�eri�e facilement, grace �a la commande hh[]:max(cf eq. (18)) par exemple , que cette condition est bien v�eri��ee.
Pour certaines simulations, plus ou moins longues selon les cas, nous avons �et�e amen�e �a sensiblement fairevarier le param�etre hh dans l'intervalle [0:05; 0:2], convenable si on conserve une subdivision sup�erieure ou �egale�a (L*0.1)2 du rectangle Th de d�epart (cf mesh Th p.20).
22
Figure 4: Maillage 3D bacterie.mesh de la paroi d'une cellule Chara, avec ajout de calottes sph�eriques auxextr�emit�es (�editeur gmsh).
23
Le volume maximal impos�e sur les t�etra�edres devrait donc etre en r�ealit�ehh3
6et non hh3 = 0.001.
Cela se justi�e par le fait que la fonction sizevolume de FreeFem++ calcule et r�eajuste non pas la tailledes t�etra�edres mais celle de chaque cube contenant 2 t�etra�edres adjacents, g�en�er�es par la fonction TetGen entreles deux surfaces de notre premier maillage Th3 = Th3sph + Th3sph2 (cf p. 21) sans t�etra�edres.
Le scalaire vv =1phh
, dans le code vu plus haut (cf p.21), correspond au facteur multiplicatif1pdet T
intervenant en g�eom�etrie di��erentielle lorsque l'on passe de la con�guration de r�ef�erence, le rectangle Th, �a lasous-vari�et�e di��erentielle �nale, appel�ee dans le code Th3�nhole (image de Th par T ), caract�eris�ee par ses
fonctions "poids" :
m11*vv , m21*vv et m22*vv
Le recours �a ce proc�ed�e ad hoc se justi�e par le fait que l'application T n'est, en aucun cas, unetransformation a�ne !
Par cons�equent, les estimations possibles vues en analyse num�erique des EDP s'appliquent di�cilement,voire pas du tout, dans le cas de notre maillage.
(cf expressions de f1, f2 et f3, p.20)
Un second code, mais cette fois-ci pour la mod�elisation g�eom�etrique des �bres dans la paroi cylindrique, a �et�er�ealis�e sur FreeFem++ �egalement, mais il n'est pas n�ecessaire pour simuler la croissance de la cellule en langagePython/Fenics .
Toutefois il serait bien utile pour une comparaison, en terme d'optimisation num�erique, entre unesimulation sur FreeFem++ et une simulation sur Fenics , par exemple pour la suite du projet, du sch�emasemi-implicite donn�e par les auteurs de l'article.
Le choix de Fenics dans ce stage est essentiellement du au fait que ce logiciel n'impose pas d'�ecrire �a chaquefois toutes les d�eriv�ees ou tous les gradients de mani�ere explicite.
En revanche, il est clair que le niveau de d�eveloppement des fonctions du logiciel FreeFem++ est tr�es �elev�evoire optimal en terme de controle des param�etres (fonctions tetgreconstruction, mmg3d, freeyams, oubien mshmet qui permet de calculer la m�etrique ou de corriger des probl�emes de valeurs propres li�es �a desm�etriques anisotropes du mesh (maillage) en prenant comme argument, par exemple, la fonction FE (fonctiontest) solution du probl�eme ), mais aussi de ra�nement (fonctions trunc et splitmesh par exemples) desmaillages 2D/3D en �el�ements �nis pour les probl�emes de r�esolution d'EDP par �el�ements �nis (FEM ).
Dans le �chier code theta.edp, nous avons simplement �ecrit le code d'une ou de plusieurs �bres tournantau sein de la paroi cylindrique (d'�epaisseur � = Rmax - Rmin) avec un angle d'inclinaison beta constant avecl'horizontale, i.e. avec le plan transversal au cylindre enveloppant la cellule.
Ce �chier est donn�e dans le dossier joint �a ce rapport, �a l'emplacement suivant : n helice+hyper3+theta+plasticiten code hyperelastique+helice FreeFem++ n Helice FreeFem++ .
Par hypoth�ese, dans le mod�ele de l'article, on prend un angle d'inclinaison initial beta(t=0) = 0(�bres transversales �a l'axe du cylindre et orient�ees dans la meme direction).
On ajoute aussi des calottes sph�eriques aux 2 extr�emit�es de chaque �bre, bien que ce soit a priori peut-etreinutile car _��a est n�egligeable dans ce mod�ele de croissance ( "�bres inextensibles" ) .
Lors de la compilation du �chier code theta.edp, on obtient une (ou plusieurs selon la valeur de beta et den dans le code) h�elice circulaire ou colonne torse tournant autour du cylindre de rayon Rmin et de hauteur
2*L (L di��erent, dans ce �chier, du "L de l'article").
24
Nous souhaitons ici simplement expliciter les notations et les calculs un peu "lourd" impl�ement�es via le �chiercode theta.edp.
******************************************************************************************
Notations dans le �chier code theta.edp, mod�elisant d'un point de vueg�eom�etrique, sur FreeFem++, l'aspect h�elico��dal du treillis de �bres au sein
de la paroi pecto-cellulosique au cours de sa croissance (i.e. pour t>0) :
Dans la base orthonorm�ee cart�esienne fe1,e2,e3g (base canonique de R3) , on consid�ere la cellule cylindriqueChara qui, sans tenir compte de sa paroi primaire, est d�e�nie simplement comme la superposition du cylindrede rayon Rmin et de hauteur 2*L avec les deux calottes sph�eriques ajout�ees "arti�ciellement" aux extr�emit�esde ce cylindre :
l1 =Rmin*cos(x)*cos(y)*(z>L)+Rmin*cos(x)*cos(y)*(z<-L)+ Rmin*cos(y)*((z<L)&&(z>-L));l2 =Rmin*cos(x)*sin(y)*(z>L)+Rmin*cos(x)*sin(y)*(z<-L)+ Rmin*sin(y)*((z<L)&&(z> -L));
l3=(L+Rmin*sin(x))*(z>L)+(-L-Rmin*sin(x))*(z< -L)+ z*((x<L)&&(z> -L));
Avec z2[-L,L], y2[0,2�], et x2[0,�/2] .
On d�e�nit le cylindre ext�erieur de la paroi enveloppant la bact�erie et trac�e ici sans les calottes sph�eriques (justepour pouvoir visualiser en vue de dessus les h�elices dans la paroi ..) :
L1 =Rmax*cos(y)*((x< L)&&(x> -L));L2 =Rmax*sin(y)*((x< L)&&(x>-L));
L3 =x*((x< L)&&(x > -L));
Param�etrage de l'h�elice circulaire tournant autour du cylindre de rayon (Rmin+a), de hauteur totale identique(2*L). Le pas de l'h�elice (distance entre deux spires cons�ecutives) est alors donn�e par :
2*lh=2*pi*p(Rmin+ a)2 + h2*sin(�)
si � d�esigne l'inclinaison (suppos�ee ici constante) de l'h�elice par rapport au plan horizontal (c'est-�a-dire parrapport au plan vectoriel vectfe1,e2g) :
f1(z)= r*cos(�+z/h) ;f2(z)= r*sin(�+z/h) ;
f3(z)= z;
On d�e�nit le vecteur�!f par
�!f (z)=
��!OM, si O d�esigne l'origine dur rep�ere cart�esien associ�e et M le point
de coordonn�ees cart�esiennes (f1(z),f2(z),f3(z)) dans ce rep�ere et situ�e sur cette h�elice circulaire ; avec de plus(z/h)2 [��;�] car z2[-L,L] et � �etant un angle de d�epart arbitraire donn�e.
D�eriv�ees partielles premi�eres du vecteur�!f (z) :
_f1(z)= -(r/h)*sin(�+z/h) ;_f2(z)= (r/h)*cos(�+z/h) ;
_f3(z)= 1 ;
D�eriv�ees partielles secondes du vecteur�!f (z) :
�f1(z) = -(r/h2)*cos(�+z/h) ;�f2(z) = -(r/h2)*sin(�+z/h) ;
�f3(z) = 0 ;
25
D�eriv�ees partielles tierces du vecteur�!f (z) :
...f1(z) = (r/h3)*sin(�+z/h) ;...f2(z) = -(r/h3)*cos(�+z/h) ;...
f3(z) = 0 ;
Calcul de la norme (constante dans ce cas) du vecteur~_f :
k~_fk =q
_f12+ _f2
2+ _f3
2= (1/h)*
pr2 + h2 ;
D�e�nition du vecteur tangent unitaire ~t(z) :
t1(z)=_f1(z)
k~_fk;
t2(z)=_f2(z)
k~_fk;
t3(z)=_f3(z)
k~_fk;
Courbure et torsion (constantes car l'application �z : z 7! �(z) est suppos�ee constante) :
Courbure :
=
q( _f2(z) � �f3(z)� _f3(z) � �f2(z))2 + ( _f3(z) � �f1(z)� _f1(z) � �f3(z))2 + ( _f1(z) � �f2(z)� �f1(z) � _f2(z))2
k~_fk3=2
Dans ce cas, la courbure est constante :
= r(r2+h2) ;
Torsion :
�=( _f2(z) � �f3(z)� _f3(z) � �f2(z)) �
...f1(z) + ( _f3(z) � �f1(z)� _f1(z) � �f3(z)) �
...f2(z) + ( _f1(z) � �f2(z)� �f1(z) � _f2(z)) �
...f3(z))
( _f2(z) � �f3(z)� _f3(z) � �f2(z))2 + ( _f3(z) � �f1(z)� _f1(z) � �f3(z))2 + ( _f1(z) � �f2(z)� �f1(z) � _f2(z))2
Dans ce cas, la torsion est constante :
� =h
r2 + h2
Calcul du vecteur normal unitaire ~n :
n1(z) =�f1(z)
k~�fk;
26
n2(z)=�f2(z)
k~�fk;
n3(z)=�f3(z)
k~�fk;
[Les termes en (1/ ) se simpli�ent au num�erateur et au d�enominateur]
On obtient en�n le vecteur binormal (unitaire) ~b = ~t ^ ~n ainsi que notre base de Frenet associ�ee �a l'h�elicesouhait�ee ==ft,n,bg .
Maintenant nous param�etrons chaque cercle de centre (f1,f2,f3), de rayon a et inscrit dans le plan normal auvecteur t(f1,f2,f3), vecteur unitaire tangent �a l'h�elice en (f1,f2,f3) :
Soit G un point de ce cercle. On pose ~OG = ~g .
Ses trois coordonn�ees cart�esiennes sont alors :
g1(z,u)= (f1(z)+a*cos(u)*n1(z)+a*sin(u)*b1(z))*((x<L)&&(x>-L));g2(z,u)= (f2(z)+a*cos(u)*n2(z)+a*sin(u)*b2(z))*((x< L)&&(x>-L));g3(z,u)= (f3(z)+a*cos(u)*n3(z)+a*sin(u)*b3(z))*((x<L)&&(x>-L));
Ajoutons �a pr�esent les calottes sph�eriques aux 2 extr�emit�es de notre h�elico��de circulaire ainsi obtenu (le faitque sur les deux extr�emit�es z2 [�L� a � sin(�);�L+ a � sin(�)] est un probl�eme absorb�e par le changement debase), toujours en partant de la base de Frenet:
g1(z,u)= (f1(t,u,n)+a*cos(u)*n1(t,u)+a*sin(u)*b1(t,u))*((x<L)&&(x>-L))+(f1(L,u,n)+a*cos(x-L)*cos(u)*n1(L,u))*(x>L)+(f1(-L,u,n)+a*cos(x+L)*cos(u)*n1(-L,u))*(x<-L)
+a*sin(x-L)*sin(u)*b1(L,u)*(x>L)+a*sin(x+L)*sin(u)*b1(-L,u)*(x<-L)+a*sin(x-L)*t1(L,u)*(x> L)+a*sin(x+L)*t1(-L,u)*(x<-L);g;
g2(z,u)= (f2(t,u,n)+a*cos(u)*n2(t,u)+a*sin(u)*b2(t,u))*((x<L)&&(x>-L))+(f2(L,u,n)+a*cos(x-L)*cos(u)*n2(L,u))*(x>L)+(f2(-L,u,n)+a*cos(x+L)*cos(u)*n2(-L,u))*(x<-L)
+a*sin(x-L)*sin(u)*b2(L,u)*(x>L)+a*sin(x+L)*sin(u)*b2(-L,u)*(x<-L)+a*sin(x-L)*t2(L,u)*(x> L)+a*sin(x+L)*t2(-L,u)*(x<-L);g;
g3(z,u)= (f3(t,u,n)+a*cos(u)*n3(t,u)+a*sin(u)*b3(t,u))*((x<L)&&(x>-L))+(f3(L,u,n)+a*cos(x-L)*cos(u)*n3(L,u))*(x>L)+(f3(-L,u,n)+a*cos(x+L)*cos(u)*n3(-L,u))*(x<-L)
+a*sin(x-L)*sin(u)*b3(L,u)*(x>L)+a*sin(x+L)*sin(u)*b3(-L,u)*(x<-L)+a*sin(x-L)*t3(L,u)*(x> L)+a*sin(x+L)*t3(-L,u)*(x<-L);g;
*****************************************************************************************
Rappel : les auteurs de l'article prennent le huiti�eme d'un cylindre de hauteur L0=4 mm , et emploient comme�el�ements �nis des parall�el�epip�edes avec 20 n�uds d'interpolation; alors que dans notre paroi, les �el�ements�nis sont des t�etra�edres, et on rappelle que la fonction FE solution du probl�eme variationnel, intervenant
27
dans chaque simulation, sera alors �evalu�ee sur chacun d'entre eux en 10 points d'�evaluation et dans la base despolynomes d'interpolation de Lagrange, qui devront etre localement continues et de type P2.
Les r�esultats des premi�eres simulations num�eriques e�ectu�ees lors de ce stage, qui ne concernent que lapartie �elasticit�e non-lin�eaire de la croissance, montrent que le choix de la valeur du param�etre L, tant qu'ellereste raisonnable, n'est pas �a prendre avec beaucoup de consid�eration vu qu'il n'est, du point de vue num�erique,qu'un simple rapport d'aspect entre la hauteur et le rayon r du cylindre en question.
Hormis les cas o�u il devient vraiment trop important par rapport au rayon r (10, 15, 20 par exemples,comme on le verra apr�es sur les courbes d'erreurs num�eriques), son in uence sur convergence des solveursnum�eriques choisis pour de la r�esolution des probl�emes variationnels, li�es seulement �a l'hyper�elasticit�e de laparoi, reste n�egligeable.
L'in uence du rayon cylindrique r, quant �a elle, n'est pas �a sous-estimer, puisque pour de faibles �epaisseurs,ce qui est le cas dans le mod�ele de la paroi de l'article (� = 10 �m), on doit se ramener �a des �el�ements P1pour la simulation du gon ement hyper�elastique de la paroi (seulement). On doit �egalement dans ce cas pr�ecis,pour pouvoir faire une r�esolution en calcul MPI (8 threads sur le processeur) de ce probl�eme FEM, r�e-ajusterles param�etres d'optimisation �c options, en ajoutant notamment l'option u acs.
L'inconv�enient majeur de notre mod�ele g�eom�etrique de la paroi proviendra �a vrai dire plutot de la con-s�equence qu'engendre l'ajout des 2 calottes sph�eriques sur l'erreur num�erique sur les parties (z>=L) et (z<=-L)
de notre maillage de d�epart bacterie.mesh, lors des calculs de grandeurs physiques ( a, n, S, SA, S
dev, J1,
J2, �, �, symR�et R
�vol essentiellement) d�ecrivant la partie plastique de la croissance de la paroi.
La partie hyper�elastique isotrope de la croissance, �etudi�ee en premier lieu dans ce stage, ne met ensomme pas vraiment en cause le choix de "fermer" le cylindre, l'id�ee �etant en amont d'obtenir un domaineborn�e ferm�e d'une part, et localement lipschitzien d'autre part.
A�n de se rapprocher un petit peu plus de la mod�elisation g�eom�etrique de la cellule v�eg�etale Chara tellequ'elle est d�e�nie dans l'article, on peut utiliser le maillage cylo L=12 delta=0.01.xml, que l'on obtientdirectement sur Fenics (grace aux modules import�es de dol�n, dol�n utils, et aux param�etres/options de
Fenics �c options) en ex�ecutant le �chier d�enomm�e cylo L=12 delta=0.01.py, donn�e en ANNEXE 2 dece rapport.
Ce �chier est disponible �a l'emplacement helice+hyper3+theta+plasticite n Obtention d'un mesh viaFenics du dossier joint au rapport .
On e�ectue donc dans le programme codant le ph�enom�ene d'hyper�elasticit�e de la paroi ( �chier hyper3.py)le changement de conditions de bord P � ~P (cf p.19) pour r 2 [Rmin; Rmax] et z = � L .
On constate alors qu'il n'y a plus convergence du solveur lors du gon ement hyper�elastique dela cellule �a paroi pour ce maillage , en langage Fenics (m�ethodes PETSc) !
L'explication est double :
� D'une part, le bord du domaine n'est plus assez r�egulier car discontinu au niveau des deux sections "libres"en (z = � L && r = Rmax) et en (z = � L && r = Rmin).
� D'autre part, les conditions de bord ne sont plus ni continues ni uniformes puisque ~P � 25*P .
28
Par cons�equent, un corollaire du th�eor�eme de raccord vu en cours (Analyse num�erique des EDP) montreque le probl�eme variationnel n'est plus bien pos�e car l'espace des fonctions polynomiales par morceaux V h
(i.e. l'espace des fonctions FE n'est plus dans H1(), d�es lors que les fonctions FE vh 2 V h ne sont pluscontinues sur :
V h � C() () V h � H1()
o�u d�esigne l'adh�erence du domaine tout entier de la paroi cylindrique (vrai uniquement dans le cas o�u estborn�e).
4. Simulation num�erique du ph�enom�ene d'hyper�elasticit�e .
Les di��erentes simulations num�eriques e�ectu�ees au cours de ce stage, ont �et�e impl�ement�ees en langage Python(version 2.7) pour Fenics (abr�eviation de FEniCS Project) sur le syst�eme d'exploitation Linux.
Python est un langage de programmation interpr�et�e qui, �a la di��erence des langages compil�es tel queC/C++ o�u l'ex�ecution du programme n�ecessite une �etape de retranscription enti�ere du code en langage machine(code binaire) appel�ee "compilation", les instructions donn�ees par l'utilisateur sont "traduites" au fur et �a mesurede la lecture.
The FEniCS Project, ou plus simplement "Fenics", est un logiciel rassemblant di��erentes plateformes :
� DOLFIN, qui est une librairie donnant un ensemble d'algorithmes en C++/Python pour les m�ethodesnum�eriques de r�esolution d'EDP par �el�ements �nis (FEM).DOLFIN permet de communiquer avec des librairies externes telles que PETSc ou MUMPS pour lessolveurs num�eriques , PARmetis et SCOTCH pour le partitionnement des maillages , ou bien MPI etOpenMP pour la calcul parall�elis�e .
� Fenics Form Compiler (FFC), qui permet de compiler dans les formulations variationnelles un langageUFL en langage UFC.
� Uni�ed Form Language (UFL), qui est un code int�egr�e dans Python pour les formulations variationnelles.
� Uni�ed Form-assembly Code (UFC) qui est une interface C++ permettant d'"assembler" les formulationsvariationnelles donn�ees en UFL via le compilateur FFC.
� FIAT (Finite element Automatic Tabulator), pour cr�eer les fonctions de base en �el�ements �nis sur unmaillage donn�e.
Les fonctions-objets employ�ees sur Fenics sont assembl�ees dans un module, appel�e Scipy, qui rassemble bonnombre d'outils utiles pour le calcul scienti�que de mani�ere g�en�erale. Ces fonctions proviennent de biblioth�equesPython et sont �ecrites en langage C a�n d'optimiser les performances d'ex�ecution (calcul HPC). Les objets debase de l'alg�ebre lin�eaire (vecteurs, matrices, tenseurs) proviennent du module Numpy, �egalement cod�e enlangage C.
29
Dans les simulations e�ectu�ees au cours du stage, la principale librairie utilis�ee et adopt�ee, car elle cor-respond au type d'EDP pos�ees dans le probl�eme de croissance des cellules �a paroi, est la librairie externePETSc ("Portable, Extensible Toolkit for Scienti�c computation") qui fournit des algorithmes et des outilsd'optimisation permettant de r�esoudre, �a tr�es grande �echelle, des syst�emes d'�equations aussi bien lin�eaires quenon-lin�eaires.
Les m�ethodes de base employ�ees dans les solveurs num�eriques PETSc utiles dans notre cas (i.e. le casd'�equations non-lin�eaires) sont les m�ethodes de projection dans les sous-espaces de Krylov (GMRES) et, commedans les simulations de l'article, la m�ethode de Newton, mais dans sa version PETSc, c'est-�a-dire avec param�etresd'optimisation ("trust region" ou "line search") dans les descentes de gradient : ce sont les m�ethodes Newtonwith trust region ("newtontr") et Newton with line search ("newtonls") .
Le solveur MUMPS ("MUltifrontal Massively Parrallel Solver") a �et�e utile, dans le cadre de ce probl�eme,pour optimiser le pr�e-conditionnement du syst�eme dans chaque simulation. En e�et, ce solveur est utilis�e pourla r�esolution de syst�emes lin�eaires de la forme A x = b, o�u A est une matrice pouvant etre creuse ou pleine,sym�etrique ou non sym�etrique, d�e�nie positive ou non d�e�nie positive (cas standards).
Rappel sur le pr�e-conditionnement :
Pr�e-conditionnement �a gauche :
M A x = M b
o�u M est une approximation de A�1
Pr�e-conditionnement �a droite :
A M ~x = M b , avec x =M ~x.
Si M admet une facorisation L Lt, alors les valeurs propres de M A sont celles de Lt A L (admis) , et on estramen�e �a r�esoudre le syst�eme suivant :
Lt A L ~x = Lt b , avec x= L ~x .
L'int�eret d'utiliser MUMPS dans le pr�e-conditionnement provient du fait que cette technique de r�esolution desyst�emes lin�eaires se base exclusivement sur les factorisation, optimis�ee via un calcul parall�ele sur di��erentsprocesseurs, de type LU et de type LDLT .
Le pr�e-conditionneur MUMPS, optimal pour le type d'EDP qui nous concerne, est utilis�e dans une techniquede r�esolution PETSc qui sera la m�ethode de r�ef�erence employ�ee dans la plupart de nos simulations :
la m�ethode newtontr ("newton with trust region" ou m�ethode de Newton �a r�egion de con�ance).
La m�ethode newtontr est souvent employ�ee dans le cas g�en�eral des m�ethodes de Newton d'ordre �elev�e, �a l'instard'une autre m�ethode appel�ee m�ethode quasi-Newton qui peut s'av�erer plus e�cace lorsque l'ordre (c'est-�a-direle nombre de d�eriv�ees qu'on doit calculer �a chaque it�eration) augmente vite et devient trop important .
La m�ethode newtontr permet de se ramener �a un domaine born�e autour de la solution approch�ee xk et der�eduire, de mani�ere souvent rapide, le diam�etre �k au fur et �a mesure du proc�ed�e apr�es chaque it�eration k.
Le probl�eme est donc de savoir quelle fonctionnelle veut-on annuler par la m�ethode de Newton (�a r�egionde con�ance) d�es lors qu'il s'agit d'un syst�eme non-lin�eaire d'�equations �a r�esoudre dans Rn ?
C'est �a ce niveau de la r�esolution du syst�eme d'EDP qu'interviennent alors les m�ethodes de Krylov.
M�ethodes de Krylov :
Les m�ethodes de Krylov sont des m�ethodes de r�esolution it�eratives d'un syst�eme lin�eaire de dimension n :
A.x = b : (L)
o�u A est une matrice carr�e inversible de dimension n ,via des projections orthogonales dans des sous-espaces vectoriels particuliers : les espaces de Krylov .
30
En notant x0 une solution approch�ee de la solution x du syst�eme lin�eaire (L) , on associe le vecteur r�esidu g0 =A.x0-b . On appelle espace de Krylov d'ordre p et on note Kp, pour p2 N�, l'espace vectoriel g�en�er�e par g0 etses (p-1) produits it�er�es par A :
Kp=vectfg0, A.g0,..., Ap�1.g0gLa famille (Kp)p2N� est croissante de p=1 jusqu'�a un certain p=pmax, qui correspond dimension maximale dechacun des Kp, puis stationnaire pour p � pmax (x0 �x�e).La famille (g0, A.g0,..., A
pmax�1.g0) �etant libre, il existe un (pmax-1)-uplet (�0; �1, .... , �pmax�1) tel que :
Apmax :g0 =
pmax�1Xk=1
�kAk:g0 (1)
De ce fait, le terme �0 ne peut etre nul, derechef par ind�ependance lin�eaire des vecteurs de la base naturelle(Ap�1.g0)1�p�pmax des Kp , car sinon on aurait :
Apmax�1.g0=Ppmax�1
k=1 � k Ak�1. g0
L'�egalit�e (2) peut alors s'�ecrire sous la forme suivante :
A:(x0 +
pmax�1Xk=1
�k�0Ak�1:g0 � 1
�0Apmax�1:g0) = b (2)
La solution x du syst�eme lin�eaire (L) est donc contenue dans l'espace a�ne x0+Kpmax ,et l'espace vectoriel Kpmax est le point de stagnation de la suite (Kp)p2N� .
R�eciproquement : x2x0+Kpmax =) (Ap�1.g0)1�p�pmax est une base des Kp .
Pour �eviter la divergence num�erique inh�erente �a la base naturelle (Ap�1.g0)1�p�pmax des espaces de Krylov,on construit, via le proc�ed�e classique d'orthonormalisation de Gram-Scmidt pour le produit scalaire euclidien,la base d'Arnoldi :
g0 = A.x0-b
v1 =v0k v0 k
Pour j � 1, w = A.vj-Pj
i=1((A:vj):vi) � vi o�u ( . ) d�esigne le produit scalaire euclidien, puis :
vj+1=w
k w kCe qui peut s'�ecrire matriciellement sous la forme :
A.vj=Pj+1
i=1 hij � viavec hj+1;j= k w k et hij= ((A.vj):vi) pour 1 � i � j
Notons Vp la matrice �a n lignes et p colonnes , dont les p colonnes sont les p premiers vecteurs de la based'Arnoldi, et Hp+1;p la matrice �a (p+1) lignes et p colonnes compos�ee des hij d�e�nis plus haut pour i� j+1 etde z�eros pour i >j . On a alors :
Vtp.Vp = Ip
Ip �etant la matrice identit�e d'ordre pA.Vp= Vp+1.Hp+1;p
En notant Hp le bloc diagonal de Hp+1;p, on a :
Vtp.A.Vp= Hp
Hp est une matrice dite de forme Hessenberg sup�erieure .
Construction de la base de Lanczos dans le cas A sym�etrique :
31
Dans le cas o�u A est une matrice (r�eelle) sym�etrique, il r�esulte que Hp l'est aussi, et comme elle est de formeHessenberg sup�erieure, Hp est une matrice tridiagonale sym�etrique . Comme hj�1;j=hj;j�1 et que hij=0 pouri < j-1 et i >j+1, la base d'Arnoldi se simpli�e dans ce cas en une base appel�ee base de Lanczos.
Si Vp est une base de l'espace de Krylov Kp �a l'it�eration p, une solution approch�ee du syst�eme lin�eaire (1)s'�ecrit alors sous la forme :
xp = x0+Vp.zp
o�u zp est un vecteur de dimension p.
A l'it�eration p, les vecteurs erreur et r�esidu s'�ecrivent :
ep=xp- x0=e0+Vp.zpgp= A.xp- b = g0+A.Vp.zp
Si A est sym�etrique d�e�nie positive, la m�ethode de Lanczos consiste �a minimiser la norme de l'erreurpour la norme subordonn�ee �a A :
k xp � x k2A = (A.(xp-x).(xp-x)) = (gp.ep)
Ainsi la solution approch�ee xp pour la m�ethode de Lanczos est la projection orthogonale de xsur l'espace a�ne x0+Kp pour le produit scalaire associ�e �a la matrice A du syst�eme (L).
Comme (xp-x) 2 Kp, le vecteur r�esidu gp est orthogonal �a Kp .
Dans le cas A sym�etrique d�e�nie positive, la fonctionnelle quadratique J(x) =1
2(A.x,x) - (b.x) est strictement
convexe et born�ee inf�erieurement . Elle admet un minimum global, qui est x la solution du syst�eme (L).
Minimiser le produit scalaire (gp.ep) dans ce cas revient alors �a minimiser le terme :
1
2(Tp.zp.zp) + (yp:zp )
avec Tp=VtpA Vp et ypi=(vi.g0), 8i 2 f1; ::; ng
Le minimum est donc atteint en xp = x0+Vp.zp avec zp solution de :
Tp.zp= - yp
La matrice Tp est tri-diagonale sym�etrique d�e�nie positive (car A sym�etrique d�e�nie positive) , elle admetune factorisation de Crout ou factorisation LDLT (vu en TD d'Analyse num�erique des EDP, en M1 M.M.S. �al'UPPA) :
Tp= LpDpLtp
o�u Lp est une matrice triangulaire inf�erieure bi-diagonale avec des coe�cients �egaux �a 1 sur la diagonale.
En �ecrivant la d�ecomposition matricielle LDLT sous la forme suivante :
Tp = (Tp�1
0 ... tp;p�1
0...
tp�1;ptpp
) = (Lp�1
[0 ::: lp;p�1]
0...01
) * (Dp�1L
tp�1
[0 ::: 0]
0...
up�1;pdp
)
32
(Veuillez bien excuser le style de police employ�ee ci-dessus, mais la fonction assistant matrice de la versionTexmaker employ�ee(5.6.2) ne met apparemment pas de parenth�eses (?) autour des �el�ements de la matrice. Leseul produit matriciel est donc au niveau du symbole * dans l'expression de Tp ci-dessus, et entre les parenth�eseson a donc une seule et meme matrice carr�ee d'ordre p d�ecompos�ee en blocs �a chaque fois) .
On a ensuite par identi�cation dans l'�ecriture de Tp ci-dessus:
up�1;p = tp�1;p,lp;p�1 = tp;p�1/dp�1 et dp = tpp - lp;p�1 � up�1;p.
De meme pour le terme de droite yp, on calcule seulement sa derni�ere coordonn�ee yp(p) = (vp.g0),puisque ses (p-1) premi�eres coordonn�ees sont celles du vecteur yp�1.
L'it�eration p de la m�ethode de Lanczos consiste �a d�eterminer la derni�ere composante du vecteur yp ,calculer yp+1 et �a compl�eter la factorisation de Crout de Lp �a partir de celle de Lp�1 selon l'algorithme :
yp(p) = (vp:g0)w = A.vp
w = w - tp;p�1vp�1tpp = (w:vp)w = w-tppvptp+1;p =k w kvp+1 = 1=tp+1;p
lp;p�1 = tp;p�1=dp�1dp = tpp � lp;p�1tp;p�1
Inconv�enient majeur de la m�ethode de Lanczos : l'algorithme impose de conserver tous les vecteurs dela base �a chaque it�eration, ce qui fait augmenter lin�eairement le nombre de donn�ees et d'op�erations �a chaqueit�eration .
M�ethode GMRES
Lorsque la matrice A est quelconque, le matrice Hp d�e�nie plus haut n'est plus n�ecessairement tridiagonale .On cherche �a minimiser le carr�e de la norme du vecteur r�esidu :
R(xp) = (A(xp-x), A(xp-x)) = k xp - x k2AtAL'algorithme de base de la m�ethode General Minimal RESidual (GMRES) consiste, en principe,�a calculer la base d'Arnoldi, �a e�ectuer une factorisation QR de la matrice H, puis �a d�eterminerle vecteur y .
Une autre version de GMRES, appel�ee ORTHODIR, consiste plus simplement �a construire une base Wp, quisoit AtA-orthogonale, de K p et telle que la projection W
tp A
t A Wp soit diagonale. Le processus de constructionde la base d'Arnoldi est toujours celui de Gram-Schmidt , en se r�ef�erant dor�enavant au produit scalaire associ�e�a At A :
g0 = A x0 - bw = g0
v = A w , w1 =w
k v kA w1 =
v
k v k
Pour p> 1 :
w = A wp�1
v = A w
Pour i entre 1 et p e�ectuer:
33
�i = (v, Awi)w = w - �i viv = v - �i A wi
wp =w
k v kA wp =
v
k v kLa solution approch�ee xp et le vecteur r�esidu gp sont alors donn�es par :
xp = xp�1 + �p wp
gp = gp�1 + �p A wp
Comme (xp-x)2 K p , il vient que gp est orthogonale �a A K p ce qui se traduit par :
(gp, Awp) = (gp�1, Awp) + �p (Awp, Awp) =0 : (19)
Comme k wp kAtA = 1, il vient que le coe�cient de descente est simplement donn�e par :
�p = - (gp�1, Awp) : (20)
Pr�e-conditionnement :
Comme on l'a vu plus haut , si la matrice de pr�e-conditionnement M (approximation de A�1) admet unefactorisation L*Lt, alors on a :
Lt A L ~x = Lt b , avec x= L ~x .
On a du coup, d'apr�es l'algorithme ci-dessus, la correspondance suivante :
xp = L ~xp~gp = Lt gp
On est ramen�e ainsi, pour chaque it�eration p, �a r�esoudre 2*(p+1) syst�emes triangulaires.
Finalement, les �equations (19) et (20) donnent donc l'�equation �a r�esoudre ainsi que la pente �a minimiser parla m�ethode de Newton.
Rappel : de mani�ere g�en�erale, le pr�e-conditionnement permet d'accro�tre la vitesse de convergence d'unem�ethode it�erative.
La vitesse de convergence d�epend essentiellement du conditionnement, not�e cond(A), de la matrice A dusyst�eme lin�eaire �a r�esoudre. Ce terme est d�e�ni par :
cond(A) = k A k k A�1 k
Le passage de la m�ethode GMRES "lin�eaire" �a la m�ethode GMRES "non-lin�eaire" s'op�ere par l'introductiond'un param�etre 2 [0; 1] et d'une fonction f : [0; 1] �! Rn d�ependant du param�etre appel�ee application-chemin, de telle sorte qu'en = 1 on soit dans le cas non-lin�eaire et en = 0 on soit dans le cas lin�eairedu syst�eme d'�equations �a r�esoudre : F(x) = 0 (F(x) = g(x) dans le cas lin�eaire). On calcule ensuite, via desd�eveloppements de Taylor, des "d�eriv�ees successives de l'�equation", v�eri��ee par F(x), x, et y( ), en = 0.
On est alors amen�e �a r�esoudre par la m�ethode de Newton l'�equation F(x) = 0 non plus en projetant sur lesous-espace de Krylov Kp d�e�ni plus haut, mais sur un autre sous-espace similaire correspondant aux coe�cientsy(k)(0) du d�eveloppement de Taylor de y en 0, k 2 [0; d], jusqu'�a une certaine dimension maximale de cet espacenot�ee dmax , qui doit etre choisie, comme dans le cas GMRES "lin�eaire", avec red�emarrage possible (commandeksp gmres restart sur les options PETSc) c'est-�a-dire qu'on relance la m�ethode GMRES �a partir d'un certainindice d=dmax si on est toujours au dessus de la tol�erance choisie par l'utilisateur pour r�esoudre le probl�eme demoindres carr�es �nal suivant :
Minimiser kF (x0 + 0yi(0) + 1y0
i(0) + :::+ dydi (0))k2
�a chaque �etape i .
34
Ce passage est tr�es bien d�etaill�e dans l'article intitul�e R�esolution de grands syst�emes d'�equations : du lin�eaireau non lin�eaire via des d�eriv�ees successives, co-r�edig�e par Sandrine BARGIACCHI et Mohamed MASMOUDI.
Le recours �a l'option ksp gmres restart lors de l'emploi de cette m�ethode est justi��ee par le fait que le coutde l'algorithme GMRES cro�t lin�eairement avec le nombre d'it�eration ! D'o�u l'int�eret capital d'avoir �egalementun bon pr�e-conditionneur, obtenu dans le cas du logiciel Fenics grace au solveur MUMPS.
La m�ethode GMRES en version "non-lin�eaire" revient en fait �a utiliser, pour chaque it�eration et en termede cout, la m�ethode de Newton dans le cas GMRES "lin�eaire" lorsqu'on projette le vecteur r�esidu sur l'espacede Krylov Kd+1.
Ainsi que nous l'avons dit plus haut, l'utilisation de l'option "with trust region" ("�a r�egion de con�ance"en fran�cais) pour la m�ethode de Newton est justi��ee lorsque d peut etre �elev�e .
Il s'agit simplement de d�e�nir, pour le coe�cient de descente �i (cf equation (20)), un diam�etre maximum�i autour de xi �a chaque it�eration i, �a partir du calcul de matrices hessiennes essentiellement.
Ce diam�etre d�ecro�t apr�es la r�esolution pour chaque it�eration k du probl�eme sous contrainte suivant :
minmks2Rn
(xk+s) = F(xk) + rF(xk)t s + 1
2st Hk s : (21)
avec la contrainte : k s k � �k
o�u F est la fonctionnelle associ�ee au syst�eme non-lin�eaire que l'on souhaite minimiser, H est la matrice Hessiennede F, et mk est appel�ee fonction mod�ele quadratique �a l'it�eration k.
Pour conna�tre le cadre g�en�eral de l'algorithme de r�esolution (probl�eme (21) lin�earis�e sous certaines conditionspuis calcul du point de Cauchy) de ce sous-probl�eme de minimisation de la fonction quadratique mk �a chaque�etape k de la m�ethode newtontr, on peut consulter l'article de Claude LONGCHAMP intitul�e Optimisationnum�erique ; M�ethode de la r�egion de con�ance ; Chapitre 4.1 et 4.2*; 15 octobre 2009 .
Apr�es cette rapide pr�esentation de la m�ethode adopt�ee et de l'espace dans lequel elle s'applique, venons-enaux �equations r�egissant le gon ement uniforme d'une cellule �a paroi.
Nous tenons pas compte, dans ce paragraphe, des propri�et�es plastiques de la paroi.
La s�equence donn�ee dans analytic solution.py permet d'obtenir analytiquement l'extension radialed'une cellule �a paroi cylindrique lorsque l'on gon e la cellule.
Ce �chier est donn�e �a l'emplacement helice+hyper3+theta+plasticite n code hyperelastique+heliceFreeFem++ n codehyperelastique n code analytique n solanalytique C du dossier joint au rapport.
Nous souhaitons tout de meme expliquer rapidement ici les notations et calculs e�ectu�es lors de cettes�equence.
La s�equence cod�ee dans le �chier analytic solution.py est bas�ee sur le th�eor�eme d'Eriksen, dont uned�emonstration est donn�ee dans le livre Non-Linear Elastic Deformations de R.W. Ogden, publi�e en 1998.
Le cas �etudi�e , celui d'un cylindre subissant une action de pression interne, est d�evelopp�e au paragraphe 5.2.3,page 267 du livre cit�e plus haut.
Soit C0 le cylindre de base le disque de rayon R , inscrit dans le plan z = - L, de centre O, origine du rep�erecart�esien canonique associ�e �a l'espace r�eel R3, et de hauteur 2*L .
A l'instant t=0, le cylindre est au repos , et on note (R, �0, Z) les coordonn�ees cylindriques d'un pointquelconque M0 de ce cylindre C0 .
35
On suppose que le cylindre C0 est un solide �elastique homog�ene isotrope, et qu'il est soumis uniform�ement�a l'action d'une pouss�ee int�erieure Pa ( prise �a 0.05 MPa pour la comparaison num�erique des solutions
analytique et "variationnelle" ) sur l'ensemble de sa surface int�erieure Sint = �intR [ �intL [ �int�L , o�u �intR est lapartie radiale int�erieure du cylindre et �int�L d�esigne les deux bords int�erieurs du cylindre (c'est-�a-dire les 2
disques de rayon R et centr�es en (0,0, z =�L) ).
Le th�eor�eme d'Eriksen �etablit alors que, pour un instant t>0 quelconque, les coordonn�ees cylindriques(r,�, z) du point Mt2 Ct image du point M02 C0 sont n�ecessairement celles d'une d�eformation homog�ene,
i.e. ses coordonn�ees sont n�ecessairement de la forme:
r = R*f(R) ;� = �0 ;
z = �3* Z ;
o�u �3 est le taux d'�elongation du tube cylindrique.
Le tenseur gradient de d�eformations A associ�e �a la matrice Jac' =@(r; �; z)
@(R; �0; Z)(matice jacobienne associ�ee
�a l'application, not�ee ', transformant C0 en C) est alors donn�e par :
A = �1*�!e r
N�!e R + f(R)*�!e �
N�!e �0 + �3*�!e z
N�!e Z + �3*r*�!e �
N�!e Z
o�u �1 = f(R) + R*f'(R) et �2 = f(R) sont les deux premi�eres contraintes principales, la troisi�eme contrainteprincipale �3 �etant �egale �a �2 dans cette s�equence.
On rappelle qu'une d�eformation est homog�ene si et seulement si r(A) = 0 .
Le tenseur de Green-Lagrange C est d�e�ni par :
C = At *A
On d�e�nit la fonction �energie de d�eformation W par :
W =� � (tr(C)� 3� 2 � ln(J))
2
avec J = �1 � �2 � �3 = �1 � �22 (jacobien associ�e �a la d�eformation).
Ses d�eriv�ees partielles premi�eres et secondes sont :
@W
@�1= � � (�1 � 1
�1) ,
@2W
@�21= � � (1 + 1
�21)
@W
@�2= � � (�2 � 1
�2) ,
@2W
@�22= � � (1 + 1
�22)
@2W
@�1@�2=
@2W
@�2@�1= 0
Par suite le principe fondamental de la dynamique �a l'�equilibre en l'absence de terme de source (�!f =
�!0 ) s'�ecrit:
div(�) =�!0 : (22)
36
o�u � est le tenseur de contraintes de Cauchy (not�e T dans le livre de R.W. Ogden),et dont les 3 valeurs propres sont �1; �2 et �3 .
En posant :
I1 = �1 + �2 + �3I2 = �1 � �2 + �2 � �3 + �1 � �3
I3 = �1 � �2 � �3� est alors donn�e par la relation suivante :
� =P3
i=1
@W
@Ii� @Ii@A
De plus, les polynomes sym�etriques de Lagrange Ii, i.e. les valeurs propres �i pour i 2 f1; 2; 3g dans ce cas,ne d�ependent que du rayon R.
L'�equation (22) peut alors, de ce fait, etre simpli��ee, et, dans le cas standard du "gon ement uniforme" d'uncylindre �elastique, homog�ene et isotrope, elle se simpli�e de la mani�ere suivante:
@2W
@2�1�R � f 00(R) + 2 � (@
2W
@2�1+
@2W
@2�1�2) � f 0(R) + (
@W
@�1� @W
@�2) � 1
R= 0 : (23)
Le d�eterminant du tenseur de Cauchy � est donn�e par :
det(�) = �1 � �2 � �3= �1 � �22 = (R*f'(R)+f(R))*f(R)2= J
En posant :
t1 =@W
@�1
t2 =@W
@�2
On obtient ainsi, en identi�ant �1 dans l'�equation (23), une simpli�cation suppl�ementaire de l'�equation (22)
(pour la d�eformation homog�ene d'un tube cylindrique isotrope) :
@t1@R
+t1 � t2R
= 0 : (24)
Dans le �chier analytic solution.py , on �ecrit alors :
d = delta (R,y) =
t1 � t2R
+ 2 � @t1@�1� y[1]
R � @t1@�1
avec �1= R*y[1]+y[0] = R*f'(R) + f(R) et �2 = y[0] = f(R)
puis :
f'(R) = y[1]
f"(R) =@(y[1])
@R= - delta(R,y) = - d
i.e.dy
dR= y' = ( y[1] �d )
avec y = ( y[0] y[1] ) = ( f(R) f 0(R) ) = ( �2 f 0(R) )
37
La fonction sur Python (version 2.7) nomm�ee scipy.integrate.solve bvp permet de r�esoudre cette �equationdi��erentielle ordinaire (EDO ou ODE en anglais) pour obtenir ensuite f(R) (= y[0]) via la fonction
bc : (ya,yb)7!bc(ya,yb) qui permet d'imposer les conditions aux limites relatives au probl�eme pos�e sur le borddu domaine d�e�ni (a=Rmin et b=Rmax pour cette EDO, qui se trouve ainsi ramen�ee, dans ce cas, �a l'espace
de Sobolev H1=200 [a,b] : une telle EDO est appel�ee, en anglais, ordinary di�erential equation calibrated ou ode
calibrated ) .
La fonction bc : (ya,yb)7!bc(ya,yb) impl�emente s�epar�ement sur chacun des bords l'annulation d'unefonctionnelle donn�ee par l'utilisateur, �equivalente aux conditions de bords, en fonction des param�etres d'entr�ee
ya (pour R=a=Rmin) et yb (pour R=b=Rmax) .
/////////////////////////////////////////////////////////////////////////////////////////////////////////
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 1000 points (cylindre):
[[ 0.00042905] [ 0.00046546]]
(Pour l'ex�ecution du �chier python 'analytic solution.py' avec : tol = 1e-14
Pa = 0.05 ( valeur de d�epart pour 'hyper3.py') )
Nota bene : pour Pa en dehors (plus ou moins) de l'intervalle [-3.8 , 10.5] la solution diverge ainsi que lesconditions de bord.
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 500 points (cylindre):
[[ 0.00042905] [ 0.00046546]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 350 points (cylindre):
[[ 0.00042905] [ 0.00046546]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 300 points (cylindre):
[[ 2.60902411e-14] [ 2.23098868e-14]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 250 points (cylindre):
[[ 7.08183512e-14] [ 2.23098868e-14]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 100 points (cylindre):
[[ -1.84990911e-14], [ 2.23098868e-14]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 75 points (cylindre):
[[ 2.61110578e-14] [ 0.00000000e+00]]
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 50 points (cylindre):
[[ -1.84643967e-14] [ 0.00000000e+00]]
38
AFFICHAGE DES CONDITIONS DE BORDS VIA LA FONCTION bc(ya,yb) avec 25 points (cylindre):
[[ -1.83950077e-14] [ 0.00000000e+00]]
CONCLUSION : on voit que de 25 �a 300 points, le pas radial de discr�etisation est convenable , et que 100points est une bonne discr�etisation que l'on prendra pour le rayon R surtout pour l'erreur relative.Par ailleurs, pour Pa en dehors de l'intervalle [-3.8 , 10.5], nous ne sommes plus dans le bon espace de Sobolevet la solution devient instable.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
Nota bene : comme z = �3 Z et que �2 = �3 , la fonctionu(R)
R= j (1��2(R)) j (cf Figure 5) donne le taux
d'�elongation du tube cylindrique (i.e.�L
L) en fonction de la coordonn�ee radiale R d'un point quelconque
de la paroi au cours du "gon ement" du cylindre.
Num�eriquement, on a donc, d'apr�es la solution analytique,�L
L� 0.0025 (�a 2*10�4 pr�es). Pour L = 2 mm (L
est num�eriquement un rapport d'aspect : 4*0.5 = 2*1 = 2), ce qui revient en fait au cas L = 4mm de l'article,cela fait environ 5 �m d'�elongation (au total) de la cellule soit 2.5 �m environ sur chaque extr�emit�e.
Cependant, nous avons fait ici le choix, pour a�ner radialement l'�evaluation des valeurs propres de la solutionanalytique, de prendre une �epaisseur plus raisonnable (0.1 mm au lieu de 0.01 mm) et un rayon �egal au doublede celui de l'article (1 mm au lieu de 0.5 mm ).
Pour une tr�es faible �epaisseur telle que celle adopt�ee dans l'article il faut ensuite passer en �el�ements P1(dans le code FEM sur Fenics, via la fonction d'optimisation u acs) pour pouvoir faire ensuite une comparaison"solution analytique/solution num�erique", ce qui diminue la pr�ecision de l'erreur, sachant que le param�etreimportant dans la partie hyper�elastique du processus de croissance est le rapport d'aspect L et non l'�epaisseurde la paroi, lorsqu'on veut �evaluer l'�elongation purement �elastique de la cellule, c'est-�a-dire la partie 3 del'�elongation de la cellule obtenue num�eriquement, 3 �m environ sur chaque extr�emit�e de la cellule r�eelle (leurmaillage concerne (1/8)�eme du cylindre de base), par les auteurs de l'article (cf Fig. 12. b) , x 5.2.2. , p.774,Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker,I.A. Jones).
La di��erence observ�ee est donc a priori d'environ 0.5 �m sur chaque extr�emit�e soit 1 �m au total, ce quicorrespond en fait �a l'�elongation simul�ee lors de la partie 2 du processus apparaissant sur la meme �gure (Fig.12. b)), et donnant l'�elongation irr�eversible de la paroi �a chaque gon ement (cette �gure �evalue l'�elongationen tenant compte aussi bien de l'�elasticit�e que de la plasticit�e de la paroi lors de son processus de croissance) .
Ainsi, du point de vue Physique comme du point de vue num�erique, les valeurs propres obtenues pour"notre" solution analytique (cf Figure 6) et les donn�ees des simulations num�eriques fournies par les auteurs del'article semblent bien concorder.
Dans le �chier analytic solution.py , on peut faire varier le param�etre de tol�erance tol de la fonctionsolve bvp de la librairie Scipy de Python (version 2.7) et estimer ainsi la pr�ecision num�erique de la solutionobtenue par ce solveur d'EDO, �a partir de celle de la fonction bc imposant les conditions de bord, lors de lar�esolution des deux �equations, d�etaill�ees plus haut, d'inconnues y[0] et y[1] (cf Figure 7).
�A l'emplacement du dossier joint suivant : helice+hyper3+theta+plasticite n code hyperelas-tique+helice FreeFem++ n codehyperelastique n code analytique n solanalytique C se trouvent
39
Figure 5: �Elongation radiale analytique : u analytique = u(R)
Figure 6: Valeurs propres analytiques �1 = R*f'(R)+f(R) et �2 = f(R)
Figure 7: u analytique = u(R) selon le param�etre de tol�erance tol sur les conditions de bords .
40
des agrandissements de la Figure 7 donnant plus ou moins l'ordre de tol�erance d'erreur num�erique convenablepour les conditions de bord dans la fonction bc. On voit alors que pour tol � 10�10 est un seuil de tol�eranceconvenable car l'"erreur machine" est en 10�15.
Formulation variationnelle et simulation num�erique de l'hyper�elasticit�e de la paroi d'une cellule :
Formulation faible de l'�equation d'�equilibre statique (Div(�) = 0) sur B0 :
Elle s'obtient simplement en se rappelant (cf Brefs rappels de M.M.C., page 11) que le premier tenseur dePiola-Kirchlo� � = � (F�1)t , d�e�ni sur la con�guration initiale de la paroi B0, v�eri�e alors :
�(�!n0)*dS0 = �(�!nt)*dSto�u
n0 est la normale unitaire sortante �a un �el�ement surfacique dS0 de 0, �a l'instant initial t=0 .
nt est la normale unitaire sortante �a �a un �el�ement surfacique dSt de t , �a l'instant t>0 .RB0
�:r0v dV0 -RB0
f.v dV0 -R@B0
t.v dS0 = 0
o�u v est une fonction test (au sens des distributions) �a prendre dans l'espace de Sobolev H1(B0).
Elle correspond physiquement �a un d�eplacement virtuel.
f et t repr�esentent respectivement les forces volumiques et surfaciques s'appliquant sur la con�guration B0 .
Dans le cadre de notre mod�ele, il n'y a pas de terme de source (f = ~0)
Par suite, le tenseur de contraintes de Cauchy � �etant sym�etrique, le tenseur � = J*� l'est aussi, et le produitcontract�e �a gauche de la formulation faible ci-dessus s'�ecrit alors :
� : r0v = � : (r0v.(F�1)t )
Dans la s�equence �ecrite en Python pour Fenics du �chier hyper3.py, donn�ee en ANNEXE 3, nous pr�ef�eronsdonner le code, simple dans ce cas, dans son int�egralit�e pour bien mettre en �evidence les param�etres quichangeront lorsque l'on ajoutera apr�es les �bres dans la coque cylindrique.
La m�ethode Newton �a r�egion de con�ance s'av�ere alors d'une e�cacit�e optimale, surtout dans ce cas, ainsique l'atteste la Figure 8, o�u sont superpos�ees la solution analytique (avec tol = 10�14) et la solution FE del'�elongation radiale du cylindre par cette m�ethode, aussi bien en terme de pr�ecision num�erique qu'en termede temps de convergence (environ 6 minutes) de de la m�ethode PETSc newtontr optimis�ee par les param�etreslaiss�e en �evidence dans le code en ANNEXE 3 !
On trouvera en pi�ece jointe �a ce rapport �a l'emplacement : helice+hyper3+theta+plasticite n code hy-perelastique+helice FreeFem++ n codehyperelastiquen code fenicsn codes Fenics hyper�elasticit�en cv hyper3 n hyper3vsParam�etres PETSc, les donn�ees les r�esultats de temps de simulation en fonctiondes pr�e-conditionneurs (ESSL et MUMPS optimaux), des param�etres d'optimisation et des autres m�ethodesFEM de la librairie PETSc .
En pi�ece jointe �egalement, dans le dossier helice+hyper3+theta+plasticite n code hyperelastique+heliceFreeFem++ n codehyperelastique n comparaison analytique numerique n compare errorvsL, setrouve une liste de courbes d'erreur relative de la meme simulation pr�ec�edente mais avec des valeurs de Lvariables .
41
On constate alors que, pour une meme subdivision radiale de 100 points, l'erreur num�erique optimale estde 0.18 pour cent si L=4.5, soit quasiment la meme que celle obtenue dans le cas de r�ef�erence du gon e-ment de la sph�ere, o�u l'erreur num�erique est, dans nos simulations (voir courbes d'erreur dans le dossier he-lice+hyper3+theta+plasticite n code hyperelastique+helice FreeFem++ n codehyperelastique ncomparaison analytique numerique n error sphere ), de 0.14 pour cent !
On notera que la courbe d'erreur dans le cas L = 4.5 pr�esente �egalement la meme sym�etrie radiale, le longde l'�epaisseur de la paroi, que celle du cas de la sph�ere qui est le cas de r�ef�erence en tant qu'erreur num�eriqueoptimale du point de vue Physique en hyper�elasticit�e .
Le code de la solution analytique du gon ement isotrope de la sph�ere (seul change, par rapport au cylindre,le facteur 2 devant f'(R) dans l'�equation (23)) est donn�e dans le dossier joint helice+hyper3+theta+plasticiten code hyperelastique+helice FreeFem++ n codehyperelastique n code fenics n codes Fenics hy-per�elasticit�e n hyper3 sphere .
Les courbes d'erreur num�erique obtenues dans le cas de la sph�ere, en fonction du nombre de pointsde discr�etisation de l'�epaisseur, sont donn�ees dans : helice+hyper3+theta+plasticite n code hyper-elastique+helice FreeFem++ n codehyperelastique n comparaison analytique numerique n er-ror sphere .
Sinon, pour les autres valeurs de L raisonnables (i.e. 0�L�10), l'erreur est de quelques pour cent, et pourla valeur L=1 on obtient une bonne erreur avec environ 2.18 pour cent .
Ainsi en dehors du cas particulier L=4.5, qui est le plus proche de la sph�ere, on obtient une bonne erreurrelative dans les cas suivants :
L=1.05 (2.36/100), L=1 (2.18/100), L=0.95 (1.74/100), L=1.35 (0.7/100), L=1.95 (1.278/100), L=2(0.77/100, cf Figure 9), L=2.05 (0.85/100), L=2.5 (1.9/100), L=3.5 (1.394/100),
et, r�esultat int�eressant aussi, pour L2[4; 4:95] (on incr�emente L de �L=0.1 �a chaque simulation) l'erreur estcomprise entre 0.18/100 et 2.3/100 , avec quatre cas en dessous de 1/100 (L=4.05, L=4.25, L=4.5, L=4.85).
On notera �egalement, dans le cas optimal L=4.5, que l'erreur est relativement stable lorsqu'on augmente lenombre de pas de discr�etisation de l'�epaisseur (100 points au d�ebut, puis on teste 250, 400, 500, 750 points o�ul'erreur passe de 0.18/100 �a seulement 0.34/100), ce qui est donc un bon r�esultat !
[Dans le cas de la sph�ere, l'erreur est divis�ee par 2 (soit 0.09/100 environ) lorsqu'on a�ne la subdivision del'intervalle [Rmin, Rmax], pour les points de r�esolution et d'�evaluation de l'erreur relative]
On observe ainsi, "exp�erimentalement", une stabilit�e de la m�ethode employ�ee lorsqu'on prend un rapportd'aspect convenable, c'est-�a-dire dans le cas o�u L2[0:95; 4:95], puisque au del�a de L=5 ceci n'est plus le cas(lorsque Rmin = 1 et Rmax = 1.1 dans nos tests) .
�A l'emplacement helice+hyper3+theta+plasticite n hyper3 base+calcul de theta+plasticite nbalayage mesh+gon ement du dossier joint, un programme de "balayage" permet de simuler un gon ementhyper�elastique (sans �bres) automatiquement �a partir des param�etres d'entr�ees suivants : choix du maillage,valeurs de L,de N (subdivision du rectangle initial Th) et surtout le facteur hh (plus important) pour la nouvellem�etrique dans le maillage de d�epart bacterie.mesh.
On pourra pour la simulation �nale, y ajouter plus tard les termes de plasticit�e et le r�e-employer pour unecomparaison de performance de calcul entre FENICs Project et C++ dans ce probl�eme.
Un autre �chier, �a l'emplacement helice+hyper3+theta+plasticite n hyper3 base+calcul detheta+plasticite n hyper3 en C++, donne ce premier cas d'hyper�elasticit�e (sans �bres) en langage C++.
Il pourra donc, r�eciproquement, servir �egalement de base pour une comparaison FENICs Project - C++dans la suite du projet de recherche en simulation num�erique de la croissance d'une cellule v�eg�etale Chara .
42
Figure 8: Comparaison solution analytique-solution num�erique FE (m�ethode newtontr) de l'�elongation radialedans la paroi, seulement due �a la partie hyper�elastique de la croissance de la cellule.Le nombre de points d'�evaluation sur l'�epaisseur de la paroi est de 100 points.
Figure 9: Erreur num�erique de la solution FE obtenue sur FENICs Project par la m�ethode newtontr pour L=2,Rmin=1, Rmax=1.1 . Cette erreur (0.77/100 environ) traduit l'�ecart entre les 2 courbes de la Figure 8 .
43
5. In uence des �bres attach�ees �a la paroi primaire de la cellule
souche lors de sa turgescence
Dans le �chier hyper3 �bre casestudy2 pression=0 dP=0.04 avec13dP, donn�e en ANNEXE 4, onpart d'une pression nulle puis, par pas de pression de dP=0.04 MPa, on atteint au bout de 13 "gon ements"�a la pression de turgescence �nale donn�e dans le case study 2 de l'article (0.5 Mpa, cf x5.2.2) pour calculerensuite l'�elongation �L du cylindre sur le dernier pas de pression, c'est-�a-dire, comme dans le case study 2,approximativement entre 0.46 Mpa et 0.5 Mpa. Le choix de L=5.5 provient, dans ce cas, du fait que les auteursont pris L0=12 mm pour cette simulation uniquement (on a bien alors 2*5.5+2*0.5 = 12 avec nos 2 calottessph�eriques en plus).
R�esultat sur l'�elongation de la cellule, obtenu via le �chier import 13dP.py :
Compilation import 13dP.py pour alpha=0 (alpha=0 initialement), K2=1 (K2=1 initialement), L=5.5, h-h=0.15,Rmin=0.5, delta=0.01 :
***********************************************************************************************************
python import 13dP.py0.00 // = Pression totale0.505 // = point d'�evaluation en z=�L , R=(Rmin+Rmax)/2 et un angle pris �a 0 radians.0.00156885282808 // �elongation en haut-0.00158651058946 // �elongation en bas0.00315536341754 // = �L � 3.15 �m
0.080.5050.00313949203122-0.00318196431870.00632145634993 // �L � 6.32-3.15 = 3.17 �m (les longueurs sont cumul�ees car non int�egr�ees dans la bouclefor du �chier hyper3 �bre casestudy2 pression=0 dP=0.04 avec13dP)
0.120.5050.00470952080334-0.004799948624110.00950946942745
0.160.5050.00627690289836-0.00642317474660.012700077645
0.20.5050.0078430803984-0.008054648110160.0158977285086
0.240.5050.00940677919958-0.009698357286480.0191051364861
44
0.280.5050.0109796531461-0.01132245853710.0223021116832
0.320.5050.0125517019515-0.01296945767880.0255211596303
0.360.5050.0141287361848-0.01460711490090.0287358510858
0.40.5050.0156974904264-0.01628511626040.0319826066868
0.440.5050.0172762240278-0.01792270501570.0351989290434
0.480.5050.018856021532-0.01960671383330.0384627353653
***********************************************************************************************************
Compilation import 1dP.py (un seul pas de pression) pour L=5,Rmin=0.5, delta=0.01 :
0.520.5050.00139434622398 ; soit environ 1.39 microm�etre d'�elongation sur la partie sup�erieure de la bact�erie .0.00155298495423 ; soit environ 1.55 microm�etre d'�elongation sur la partie inf�erieure de la bact�erie .
Pour L=5, Rmin=0.5, delta=0.01 (soit une longueur de 2*(5+0.5)=11 ) on est quasiment en ad�equation(2.94 microm�etres d'�elongation) avec le r�esultat annonc�e (3 �m) sur la courbe de la �gure Fig.12.b) du casestudy 2 de l'article .
Conclusion : la simulation du gon ement hyper�elastique de la paroi avec �bres est stable par pas de pressionde 0.04 Mpa. Il en va de meme pour son �elongation �L, �a chaque gon ement de la cellule, qui vaut environ3.2 �m �a 0.1 �m pr�es. Sur la Fig. 12. b) (x5.2.2.) de l'article, l'�elongation de la r�eponse �elastique (partie3 du processus de croissance dans leurs notations) vaut, �a 0.1 �m pr�es, 3 �m, d'apr�es l'�echelle de la �gure.L'erreur relative est donc comprise entre 3.33 et 6.66 (environ) pour cent maximum (nous n'avons pas plus dedonn�ees sur cette partie). On est quand meme en coh�erence avec l'ordre de grandeur et, surtout, avec la th�eoriePhysique du mod�ele propos�e dans cet article (d�ecomposition de Rodriguez ).
45
6. Calcul de la fonction de surcharge �dev
.
En ANNEXE 5, on trouvera une synth�ese comment�ee et bien d�etaill�ee des calculs �a e�ectuer dans l'ordrepour parvenir �a simuler le sch�ema num�erique donn�e �a la �n de l'article (cf p. 19-20).
Cette synth�ese est disponible dans le �chierNotation plasticite.py dans helice+hyper3+theta+plasticiten hyper3 base+calcul de theta+plasticite
Toutefois le sch�ema semi-implicite �nal n�ecessitera, pour la m�ethode de Newton, �egalement le calcul de
la d�eriv�ee@�
@��n, explicitement donn�e dans l'article (cf p. 779, Appendix A, Modeling cell wall growth using
�bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones) .
Le calcul de la fonction seuil de plasticit�e n�ecessite, �a l'instar des d�eriv�ees donn�ees en Appendix A del'article, le calcul pr�ealable du multiplicateur de Lagrange � introduit pour calculer la fonction de surcharge
�dev
li�ee au processus d'extension isochore. L'algorithme de ce calcul en langage Fenics part des formules parradicaux de racines d'ordre 4 uniquement dans les cas o�u elles peuvent etre r�eelles. Ces formules ont �et�e prisesdirectement sur Wikipedia, car ces formules sont moins "couteuses" num�eriquement que le proc�ed�e classique deCardan-Ferrari . Le code est donn�e en pi�ece jointe dans le �chier calcul racines fenics.py, �a l'emplacementn helice+hyper3+theta+plasticite n hyper3 base+calcul de theta+plasticite n Calcul theta.
A�n de mieux comprendre la s�equence donn�ee dans ce dernier calcul, auquel nous nous sommes donc arret�espour ce stage, nous donnons une s�equence d�etaill�ee d'une simulation interm�ediaire bas�ee sur un calcul, donn�een Appendix B (p.781) de l'article, permettant d'estimer la viscosit�e � et les param�etres de seuil dynamiques((1+h)*Y1 et (1+h)*Y2) �a partir de la solution analytique d'une "tr�es petite d�eformation" "�elasto plastique" .
Ce calcul est donn�e dans le �chier compare theta appendixB.py �a l'adresse helice+hyper3+theta+plasticiten hyper3 base+calcul de theta+plasticite n Calcul theta du dossier joint �a ce rapport.
Il est �egalement donn�e en ANNEXE 6.
Ce calcul permet de comparer dans un cas simple et standard les grandeurs essentielles dans le mod�elephysique de l'article telles que �, � , �dev, ~J1, ~J2, symR
�, Dg, donn�ees en Appendix B, avec celles obtenuesnum�eriquement, et de voir tout d'abord si, dans le calcul num�erique de �, les formules impl�ement�ees (tr�ese�caces) pour les racines d'ordre 4 que nous obtenons �a la �n de l'ex�ecution du �chier sont correctes. On esten e�et dans ce cas sur une �equation du second degr�e [ ~J1 = 0] poss�edant 2 racines r�eelles �evidentes donn�ees �ala �n de la s�equence ci-dessous.
Les r�esultats sont tr�es satisfaisants, hormis ~J2, o�u l'erreur est li�ee essentiellement �a un facteur -0.98 pr�esentdans le tenseur �dev intervenant dans le produit contract�e.
46
****************************************************************************************************************
R�esultats lors de la compilation du �chier compare theta appendixB.py :
****************************************************************************************************************
miguel@Precision-T1500: /Dropbox/partage/helice+hyper3+theta+plasticite/hyper3 base+calcul de theta+plasticite/Calcultheta
python compare theta appendixB.py
sigma numerique(r,0,0) =
[ -3.33354803e-01 -9.75227480e-01 -3.27898497e-03-9.75227480e-01 2.70946120e+01 1.77109169e-02-3.27898497e-03 1.77109169e-02 1.33611201e+01]
(seules comptent les valeurs situ�ees sur la diagonale, les autres termes provenant de l'erreur num�erique)
tau dev numerique(r,0,0) =
[ -1.38408078e+01 -9.84719000e-01 -3.31072366e-03-9.84719000e-01 1.38539405e+01 1.78830586e-02-3.31072366e-03 1.78830586e-02 -1.31327023e-02]
valeurs propres de sigma analytique =
-0.5728.787821782214.1089108911
tau dev analytic =
[[-14.82168733 0. 0. ]
[ 0. 0. 0. ]
[ 0. 0. 14.82168733]]
J tilde 1 =0.0
J tilde 2 =439.364830491
J 2 =385.914943037
theta 1(r,0,0) = 96.401966667theta 2(r,0,0) = -96.401975824theta 3(r,0,0) = 296.401975824theta 4(r,0,0) = 103.598033333
theta analytic 1(r,0,0) = 296.44128884theta analytic 2(r,0,0) = -96.4412888398
*******************************************************************************************************************
47
Il appara�t donc que les valeurs num�eriques de �, � , �dev (avec une erreur de 6/100 sur les valeurs propres)sont assez satisfaisantes. Cela est en revanche moins le cas pour l'invariant de Spencer J2 o�u l'on commetune erreur de 12/100. Cela s'explique, en partie du moins, par le fait que le tenseur appel�e dans le codeci-dessus "tau dev numerique(r,0,0)" comporte deux termes �egaux �a - 0.984 , correspondant (globalement) �al'ordre d'erreur num�erique commis dans le calcul de ce tenseur (idem pour "sigma numerique(r,0,0)" ).
Toutefois l'objectif initial dans cette s�equence, �a savoir retrouver les racines de la solution analytique, est belet bien atteint.
Le dernier r�esultat a�ch�e fournit en e�et les bonnes racines, �a savoir "theta 2(r,0,0)" et "theta 3(r,0,0)" .
La valeur erron�ee de "theta 4(r,0,0)" provient de l'erreur commise dans le calcul de J2 ( J2 - ~J2 = 53.45 ).
Remarque : en faisant par exemple la di��erence theta analytic 1(r,0,0) - theta 3(r,0,0) , on voit bien que
l'erreur num�erique �nale dans le calcul de ces racines est de l'ordre de 10�2.
Mais ceci n'est pas le code, attention, que nous prendrons pour le calcul syst�ematique du multiplicateurde Lagrange � sur n'importe quel maillage de la paroi.
L'erreur de la s�equence pr�ec�edente se situait en fait au niveau du "tri" des racines d'ordre 4 obtenuespuisque, ainsi que le �chier python test racines enpython permet de le v�eri�er, les racines que l'on obtientpeuvent etre dans certains cas les parties r�eelles ou imaginaires de racines complexes. Cette condition a �et�e�nalement corrig�ee en adoptant l'�ecriture en coordonn�ees polaires des nombres complexes, et en rempla�cantles conditionnelles c0, c3, c4, c5 du code pr�ec�edent par des conditionnelles portant sur le module et l'anglepolaire associ�es �a chaque racine imaginaire dans le calcul correct du �chier �nal calcul racines fenics.py,r�e-utilisable donc, d'apr�es nos v�eri�cations, pour la suite des calculs et l'impl�ementation du sch�ema num�erique�nal donn�e dans l'article .
Le �chier calcul racines fenics.py est �egalement donn�e en ANNEXE 7 de ce rapport .
On notera de plus que l'on prend en compte, dans cette version �nale du calcul de �, l'erreur num�eriquecommise par la machine (de l'ordre de 10�12) dans les d�e�nitions des fonctions conditionnelles appel�ees condi-tional dans le logiciel FENICs Project . C'est ce "d�etail" d'erreur machine qui nous donna (car mes tuteursm'ont bien aid�e l�a-dessus) le plus de di�cult�es pour obtenir la bonne valeur de � �a la �n du stage (not�e theta bondans le code) car elle intervenait aussi dans les fonctions conditionnelles.
La valeur de la fonction de surcharge �dev
(essentielle dans ce mod�ele!) associ�ee �a la phase d'extensionisochore est alors donn�ee �a partir de la fonction distance not�ee � par l'�egalit�e (7) page 15 de ce rapport, en ye�ectuant la substitution � � theta bon. Elle d�epend par d�e�nition de la valeur, strictement positive ou non,de la fonction seuil de plasticit�e fdev (cf x 2. Physique d'une cellule �a paroi de ce rapport) .
48
7. Conclusion
La mod�elisation num�erique du maillage tridimensionnel de la paroi d'une cellule v�eg�etale donn�ee dans le�chier FreeFem++ bacterie.edp (paroi cylindrique avec ajout de calottes sph�eriques aux extr�emit�es) ainsique l'emploi de la m�ethode Newton �a r�egion de con�ance avec comme pr�e-conditionneur le solveur MUMPS(optimum en e�ectuant une factorisation de Jacobi, d'apr�es les tests) s'av�erent etre, d'apr�es les nombreux cas desimulation ainsi que les di��erents param�etrages r�ealis�es tout au long de ce stage, la m�ethode de r�esolution FEMoptimale pour le probl�eme variationnel (div(�) = 0 dans H1()) inh�erent au ph�enom�ene d'hyper�elasticit�ed'une cellule v�eg�etale Chara, que l'on tienne compte ou non de la structure semi-cristalline des �bres, align�eeshorizontalement en treillis dans la paroi �a l'instant t=0, lors de l'impl�ementation de cette m�ethode it�erative.
Pour la seconde partie de ce stage, concernant l'ajout des �bres dans la coque cylindrique et le calcul des ots plastiques, nous sommes parvenus, malgr�e de nombreux petits obstacles num�eriques, �a donner un calculaussi simple que possible du multiplicateur de Lagrange � de l'article en chaque point du maillage de la paroi.Cette fonction scalaire est fondamentale dans ce mod�ele de plasticit�e des parois car elle donne presque toutesles grandeurs n�ecessaires pour l'algorithme �nal de l'article �a chaque pas de temps �t .
Finalement j'ai pu apprendre, tout au long de mon stage, grace aux directives et aux comp�etences excellentesde mes tuteurs dois-je le souligner, �a visualiser et �a comprendre m�ethodiquement, via des tests et des v�eri�cationssuccessives, les subtilit�es d'ordre num�erique intervenant dans la programmation en langage Python pour Fenics,lorsque l'on veut calculer une fonction sur un maillage d'�el�ements �nis et r�esoudre une EDP (simple dans le cashyper�elastique) par FEM .
49
8. Bibliographie
50
9. ANNEXES
****** ANNEXE 1 *******
**********************************************************************
S�equence d�etaill�ee d'un code en FreeFem++ (version 3.51-win 64) pour lemaillage de la paroi cylindrique d'une cellule v�eg�etale Chara, sans les �bres,
avec ajout de calottes sph�eriques aux deux extr�emit�es (cf �chieradapted bacterie.edp ) :
load "msh3"load "tetgen"load "medit"
real L=4.5;
// La longueur de la cellule proprement dite, c'est-�a-dire sans tenir compte des calottes sph�eriques arti�-ciellement ajout�ees aux 2 bouts du cylindre, est �egale ici �a 2*L = 9 mm (on prendra plutot L=1 ou L=2 lorsquela partie plasticit�e interviendra dans les calculs, ce qui est par ailleurs en accord avec L0 = 4 mm dans l'artricle).
mesh Th=square(45,45,[x*(2*L+�)-L-�/2,2*y*�]);// x et y sont dans l'intervalle [0; 1]// Ceci est sp�eci��e plus bas par : int[int] ref1 = [0,1] .
// Th est le rectangle de largeur [��2 ;�2 ] et de longueur [0; 2�].
// Chaque intervalle, dans ce cas, poss�ede la meme subdivision r�eguli�ere ( 45 sous-intervalles ).
// Param�etrage de la paroi cylindrique de rayon int�erieur �egal �a 1 ainsi que des 2 calottes sph�eriques derayon 1 �egalement que l'on ajoutent aux extr�emit�es :
func f1=cos(x-L)*cos(y)*(x>L)+cos(x+L)*cos(y)*(x<-L)+cos(y)*((x<L) && (x>-L));func f2 =cos(x-L)*sin(y)*(x>L)+cos(x+L)*sin(y)*(x<-L)+sin(y)*((x<L) &&(x>-L));func f3 =(L+sin(x-L))*(x>L)+(-L+sin(x+L))*(x<-L)+x*((x<L) && (x>-L));
// Les parties (x>L) et (x<-L) concernent les 2 calottes sph�eriques .
// Matrice DF des d�eriv�ees partielles associ�ees au param�etrage de la paroi (matrice 3 lignes � 2 colonnes):
func f1x =-sin(x-L)*cos(y)*(x>L)-sin(x+L)*cos(y)*(x<-L);func f2x =-sin(x-L)*sin(y)*(x>L)-sin(x+L)*sin(y)*(x<-L);func f3x =cos(x-L)*(x>L)+cos(x+L)*(x<-L)+1*((x<L) && (x>-L));
func f1y =-cos(x-L)*sin(y)*(x>L)-cos(x+L)*sin(y)*(x<-L)-sin(y)*((x<L) && (x>-L));func f2y =cos(x-L)*cos(y)*(x>L)+cos(x+L)*cos(y)*(x<-L)+cos(y)*((x<L) && (x>-L));func f3y =0.;
// Matrice (sym�etrique) M = DF tDF , dont les coe�cients (mij)i;j2f1;2g sont ceux de la m�etrique associ�ee:
func m11=f21x+f
22x+f
23x ;
func m21=f1x*f1y+f2x*f2y+f3x*f3y ; // ( m21 = m12 )
func m22=f21y+f
22y+f
23y ;
// "Adaptation" du rectangle initial Th �a la con�guration spatiale demand�ee via la fonction adaptmesh :
51
func perio=[[4,y],[2,y],[1,x],[3,x]];
// La fonction perio assure une certaine "p�eriodicit�e" ou r�egularit�e du maillage en fonction de la subdivisionchoisie par l'utilisateur dans le rectangle de r�ef�erence.
real hh=0.1;
// Le scalaire hh permet d'homog�en�eiser ou de rendre quasi-uniforme le nouveau rectangle Th, adapt�e,via la fonction adaptmesh, �a la m�etrique cylindre+sph�ere ci-dessous, en imposant un diam�etre maximal pourchaque triangle de ce maillage.// On prend hh = 0.1, car c'est ici tout simplement le ratio correspondant entre la subdivision de d�epart choisie(45 sous-intervalles) et la longueur L (4.5).
real vv= 1/square(hh);verbosity=2;Th=adaptmesh(Th,m11*vv,m21*vv,m22*vv,IsMetric=1,periodic=perio);medit("adapted squaremesh",Th,wait=1);verbosity=2;
// Construction des surfaces int�erieure (r=Rmin) et ext�erieure (r=Rmax) de la paroi de notre cellule :
real Rmin = 0.5;func f1min = Rmin*f1;func f2min = Rmin*f2;func f3min = Rmin*f3;
int[int] ref1=[0,1];int[int] ref2=[0,2];
cout << "=====================" <<endl;cout <<"====================="<< endl;mesh3 Th3sph=movemesh23(Th,transfo=[f1min,f2min,f3min],orientation=-1,label=ref1);cout << "=====================" <<endl;cout << "=====================" << endl;
real Rmax = 0.51;func f1max = Rmax*f1;func f2max = Rmax*f2;func f3max = Rmax*f3;
cout << "=====================" << endl;cout <<"=====================" << endl;
mesh3 Th3sph2=movemesh23(Th,transfo=[f1max,f2max,f3max],orientation=1,label=ref2);
cout<<"=====================" <<endl;cout << "====================="<<endl;
savemesh(Th3sph2,"cellwall.mesh");
cout<< "addition" << endl;
// Superposition des deux surfaces dans un meme maillage 3D :
mesh3 Th3=Th3sph+Th3sph2;
// A�chage 3D du maillage "adapt�e" Th3 des 2 surfaces :
52
medit("cellwallwithahole",wait=1,Th3);
// "T�eta�edrisation" du maillage Th3 :
real[int] hole = [0.,0.,0.];
// La fonction hole d�e�nit le point autour duquel on ne souhaite pas cr�eer d'�el�ements �nis 3D .
real[int] domain = [0.505,0.,0.,1,0.001];
// La fonction domain permet de d�e�nir une r�egion autour d'un point milieu (ici le point (0.505,0.,0.)),�a laquelle on associe un label (ici �egal �a 1). Le dernier param�etre est la fonction sizevolume, qui impose unvolume maximum pour chaque t�etra�edre cr�e�e ensuite grace �a la fonction TetGen entre les 2 surfaces maill�ees .
// Le volume maximal d'un t�etra�edre est donc �egal ici �a volmax = 0.001 (car hh3 = 0.001).
cout << "=============================" <<endl;cout<< " tetgen call with hole " << endl;cout <<"=============================" << endl;mesh3 Th3�nhole=tetg(Th3,switch="paAAQC",nbofholes=1,holelist=hole,nbofregions=1,regionlist=domain);cout << "============================="<<endl;cout << "�nish: tetgen call with hole "<< endl;cout << "=============================" << endl;
// Sauvegarde du maillage �nal :
savemesh(Th3�nhole,"bacterie.mesh");
// A�chage 3D du maillage �nal :
medit("cell wall tetrahelized",wait=1,Th3�nhole);
*****************************************************************************
53
****** ANNEXE 2 *******
***********************************************************************************************
Mod�elisation g�eom�etrique de la paroi d'une cellule Chara , sans les �bres etsans ajout de calottes sph�eriques �a ses extr�emit�es, sur le logiciel Fenics :
////////////////////////////////////////////////////////////////////////////////////
S�equence cod�ee en Python pour Fenics dans le �chier cylo L=12 delta=0.01.xml :
parameters["form compiler"]["quadrature degree"] = 6�c options=f"optimize":"True","eliminate zeros":"True","precompute basis const":"True","precompute ip const":"True"gparameters["mesh partitioner"] = "ParMETIS"
L=12. #rapport d'aspect : Ldimensionne/Rmindimensionne
Rmin = 0.5
delta = 0.01
Rmax = Rmin+delta
#fragments=51. # (optionnel)
cylmin = Cylinder(do.Point(0.0,0.0,L),do.Point(0.0,0.0,-L),Rmin,Rmin)cylmax = Cylinder(do.Point(0.0,0.0,L),do.Point(0.0,0.0,-L),Rmax,Rmax)cylinder=cylmax-cylmin
generator = CSGCGALMeshGenerator3D()
# Param�etres du maillage primordiaux :
generator.parameters["edge size"] = 0.75generator.parameters["facet size"] = 0.75generator.parameters[ "facet distance" ] = 0.314generator.parameters[ "cell size" ] = 0.75
# Param�etres de ra�nement du maillage :
generator.parameters["facet angle"] = 20.generator.parameters[ "cell radius edge ratio" ] = 3.generator.parameters[ "feature threshold" ] = 72.generator.parameters[ "mesh resolution" ] = 64.
info(generator.parameters, True)mesh=generator.generate(CSGCGALDomain3D(cylinder))
File("cylo L=12 delta=0.01.xml") << mesh
m = do.Mesh("cylo L=12 delta=0.01.xml")do.plot(m, "3D mesh")do.interactive()
///////////////////////////////////////////////////////////////////////////////////////
***************************************************************************************
54
****** ANNEXE 3 *******
**********************************************************************************************************
Simulation de l'hyper�elasicit�e de la paroi par la m�ethode newtontr de la librairie PETSc sur FENICs Project ,cod�ee dans le �chier hyper3.py :
/////////////////////////////////////////////////////////////////////////////////////////////////
from future import print functionfrom dol�n import *from mshr import *import numpy as npimport pickle
import time
nom�chier='solution numerique originalEtienne�lehyper3mail21mars2017.pickle'
parameters["allow extrapolation"] =True // Lorsque les points ne sont pas des noeuds du maillage .parameters["re�nement algorithm"] = "plaza with parent facets"parameters["form compiler"]["cpp optimize"] = Trueparameters["form compiler"]["representation"] = "quadrature"parameters["form compiler"]["quadrature degree"] = 6 // Degr�e de quadrature .
parameters["form compiler"]["eliminate zeros"] =Trueparameters["form compiler"]["precompute basis const"] =Trueparameters["form compiler"]["precompute ip const"] =Trueparameters["mesh partitioner"] = "ParMETIS"
L=2. //rapport d'aspect : Ldimensionne/Rmindimensionne
Rmax=1.1Rmin=1.
Pression=0.05 // Incr�ement de pression de l'article (cf x5.2.2, case study 2.2 , Figure 12. a) et b) )
// Material constants
mu = 100 // Lame's constants
lmbda = 100
mesh = Mesh("bacterie L=2.xml") // Mesh issue de bacterie.mesh sur FreeFem++
boundary markers = FacetFunction('size t', mesh) // D�e�nition et indexation des bords du mesh en R=Rmin(2 calottes spheriques+ 1 surface lat�erale)
class Sur�nthaut(SubDomain):
def inside(self, x, on boundary):
return on boundary and (x[0]*x[0]+x[1]*x[1]+(x[2]-L*Rmin)*(x[2]-L*Rmin)< 1.001*Rmin**2) and (x[2]>=L*Rmin)
class Sur�ntbas(SubDomain):
def inside(self, x, on boundary):
55
return on boundary and (x[0]*x[0]+x[1]*x[1]+(x[2]+L*Rmin)*(x[2]+L*Rmin)< 1.001*Rmin**2) and (x[2]<=-L*Rmin)
class Sur�ntcyl(SubDomain):
def inside(self, x, on boundary):
return on boundary and (x[0]*x[0]+x[1]*x[1]<1.001*Rmin**2) and (x[2]*x[2]<(L*Rmin)*(L*Rmin))
// Initialize sub-domain instances
sur�nthaut = Sur�nthaut()sur�ntbas = Sur�ntbas()sur�ntcyl = Sur�ntcyl()
sur�nthaut.mark(boundary markers, 1)sur�ntbas.mark(boundary markers, 2)sur�ntcyl.mark(boundary markers, 3)
ds = Measure('ds', domain=mesh, subdomain data=boundary markers)
V = VectorFunctionSpace(mesh, "Lagrange", 2) // fonctions vectorielles P2 continues de Lagrange
// De�ne functions
du = TrialFunction(V) // Incremental displacementv = TestFunction(V) // Test functionu = Function(V) // Displacement from previous iteration
n = FacetNormal(mesh)d = len(u)I = Identity(d)
F = I + grad(u) // Deformation gradientJ=det(F)C = F.T*F // Right Cauchy-Green tensor
//psi = lmbda/2*(tr(C)-3-2*J)//S = 2*di�(psi, C) // Second tenseur de Piola-Kirchlo� ( S = 2* dpsi/dC)//tau=F*S*transpose(F)
tau=lmbda*(F*F.T-I) // Tenseur pression de Kirchlo� (tau = F*S*(F.T) = J*sigma)
B=inv(F)
avant = time.clock()
L = inner(tau, grad(v)*B)*dx +Pression*J*inner(n, B*v)*ds(1)+Pression*J*inner(n, B*v)*ds(2)+Pression*J*inner(n,B*v)*ds(3) //Formulation du probl�eme variationnel : div(sigma) = 0 dans H1()
a=derivative(L,u,du)
snes solver parameters = "nonlinear solver": "snes"
problem=NonlinearVariationalProblem(L,u,J=a,form compiler parameters=�c options)
solver = NonlinearVariationalSolver(problem)solver.parameters.update(snes solver parameters)
56
PETScOptions.set('ksp gmres restart', '130')PETScOptions.set('pc type', 'jacobi')PETScOptions.set('pc FactorSolverPackage', 'mumps')PETScOptions.set('snes type', 'newtontr')
PETScOptions.set('snes linesearch order', '3') // optionnel
PETScOptions.set('ksp monitor true residual', 'True')PETScOptions.set('ksp converged reason', 'True')PETScOptions.set('ksp monitor cancel', 'true')
PETScOptions.set('snes lag preconditioner', '5')PETScOptions.set('snes lag jacobian', '5')
PETScOptions.set('ksp atol', '1e-12')PETScOptions.set('ksp rtol', '1e-12')PETScOptions.set('ksp dtol', '1e-12')
PETScOptions.set('ksp max it', '1000')
// Solve variational problem
solver.solve()
print ('Time execution : ',time.clock() - avant)
R = np.linspace(Rmin,Rmax,100)
listenumerique=[]
for x in R:
listenumerique.append(u(x,0,0)[0])
unumerique=np.array(listenumerique)
pickle.dump([R,unumerique],open(nom�chier,'w'))
/////////////////////////////////////////////////////////////////////////////////////////////////
***************************************************************************************************
57
****** ANNEXE 4 *******
////////////////////////////////////////////////////////////////////////////////////////////////////////////////
S�equence du �chier hyper3 �bre casestudy2 pression=0 dP=0.04 avec13dP :
from future import print functionfrom dol�n import *from mshr import *import mathimport u import osimport numpy as npimport pickleimport time
// Nous vous �epargnons la re-lecture du d�ebut de s�equence quasi-r�ep�etitif des simulations d'hyper�elasticit�e. [.................................................................]
//Ajout des �bres :
alpha=0.00 // Inclinaison initiale des �bres par rapport �a l'horizontale .R=np.linspace(Rmin, Rmax, 100) // Choix de discr�etisation de l'�epaisseur de la paroi de la cellule .h=L/100. // Param�etre de la fonction plateau (trap�eze) pour les �bres .xo = SpatialCoordinate(mesh)
// Champ de �bres au repos :
f=as vector((-xo[1]*cos(alpha)/pow(xo[0]*xo[0]+xo[1]*xo[1],0.5),xo[0]*cos(alpha)/pow(xo[0]*xo[0]+xo[1]*xo[1],0.5),sin(alpha)))
// Champ de �bres sur B t :
a = F*f
// Tenseurs et fonctions scalaires associ�ees �a ce champ de �bres :
A = as tensor(a[i]*a[j],(i,j))lambda A = tr(A)a tilde = (1./sqrt(lambda A))*aA tilde = as tensor(a tilde[i]*a tilde[j],(i,j))
C hat = pow(J,-2./3.)*Cb hat = pow(J,-2./3.)*b
I4 hat = inner(C hat,A)lambda hat A = I4 hatalpha1 = (lambda hat A -1)*exp(K2*(lambda hat A -1)**2)
// Fonction trap�eze permettant de d�e�nir les �bres uniquement sur la partie cylindrique du maillageFreeFem++ choisi dans ce stage :
step=conditional(lt(abs(xo[2]-L),abs(h)),1,0)*(-1/h)*(xo[2]-L)+conditional(lt(abs(xo[2]+L),abs(h)),1,0)*(1/h)*(xo[2]+L)+conditional(lt(abs(xo[2]),
abs(L-h)),1,0)
tau = K*J*(J-1)*I + mu*(b hat-(1./3.)*tr(b hat)*I)+step*pow(J,-2./3.)*(A-(1./3.)*tr(A)*I)*alpha1*2*K1// (avec J=J bar vu qu'il n'y a toujours que de l'hyper�elasticit�e dans cette simulation)
58
(cf expression de sigma Table 1, p. 757, Modeling cell wall growth using �bre-reinforced hyperelastic-viscoplastic constitutive law, R.Huang, AA. Becker, I.A. Jones)
B=inv(F)
for i in range(0,13) :
avant = time.clock()
//R�esoudre Div(sigma) = 0 en prenant comme fonction FE v2H1()\ V, avec born�e (L2(),! C()) :
L = inner(tau, grad(v)*B)*dx +Pression*J*inner(n, B*v)*ds(1)+Pression*J*inner(n,B*v)*ds(2)+Pression*J*inner(n, B*v)*ds(3)
a=derivative(L,u,du)
snes solver parameters = "nonlinear solver": "snes"
problem=NonlinearVariationalProblem(L,u,J=a,form compiler parameters=�c options)
solver = NonlinearVariationalSolver(problem)solver.parameters.update(snes solver parameters)
// Options et param�etres d'optimisation num�erique PETSc :
PETScOptions.set('ksp gmres restart', '130') // Red�emarrage de la m�ethode GMRES �a partir de d=130 //(optimal d'apr�es les tests).PETScOptions.set('pc type', 'jacobi') // Choix du pr�e-conditionneur .PETScOptions.set('pc FactorSolverPackage', 'mumps') // Solveur utilis�e pour le pr�e-conditionnement .PETScOptions.set('snes type', 'newtontr') // M�ethode de r�esolution FEM .
PETScOptions.set('snes linesearch order', '3') // optionnel
PETScOptions.set('ksp monitor true residual', 'True')PETScOptions.set('ksp converged reason', 'True')PETScOptions.set('ksp monitor cancel', 'true')
// P�eriode de remise �a jour (optionnel) : du calcul de la matrice jacobienne pour la "direction de descente"et de factorisation pour le pr�e-conditionneur (MUMPS) :
PETScOptions.set('snes lag preconditioner', '5')PETScOptions.set('snes lag jacobian', '5')
PETScOptions.set('ksp atol', '1e-12') // Erreur absolue (cf m�ethode GMRES).PETScOptions.set('ksp rtol', '1e-12') // Erreur r�esidu (cf m�ethode GMRES) .PETScOptions.set('ksp dtol', '1e-12') // Erreur relative entre chaque it�eration.
PETScOptions.set('ksp max it', '1000') // Nombre maximal d'it�erations pour les m�ethodes de Krylov .
solver.solve()
print ('Time execution : ',time.clock() - avant)
IncrementPplusdP="Pression="+str(Pression)+".h5"
mesh �le = HDF5File(mesh.mpi comm(),IncrementPplusdP, 'w')
mesh �le.write(u, "fun u P="+str(Pression)+"")
Pression = Pression+dP
59
///////////////////////////////////////////////////////////////////////////////////////////////////////
*********************************************************************************************************
****** ANNEXE 5 *******
************************************************************************************************************
Synth�ese et notations d�etaill�ees des grandeurs physiques de l'article �a calculer pourl'impl�ementation du sch�ema num�erique �nal :
////////////////////////////////////////////////////////////////////////////////////////////////////////////
S�equence du �chier Notation plasticite.py :
from future import print functionfrom dol�n import *from mshr import *from petsc4py import PETSc
parameters["form compiler"]["cpp optimize"] = Trueparameters["form compiler"]["representation"] = "quadrature"parameters["form compiler"]["quadrature degree"] = 6�c options= "optimize": "True","eliminate zeros":"True","precompute basis const":"True","precompute ip const":"True"parameters["mesh partitioner"] = "ParMETIS"
L=1. // Rapport d'aspect
Rmax=1.1Rmin=1
Pression=0.04 // Incr�ement de pression du case study 2 (cf x5.2.2. de l'article)
// Material constants :
nu = 0.3E = 1.65*1e3 // valeur prise dans le case study 2 (x5.2.2).kappa = E/(3*(1-2*nu))mu = E/(2*(1+nu))K1 = muK2 = 1.
mesh = Mesh("bacterie L=1.xml")
boundary markers = FacetFunction('size t', mesh)
class Sur�nthaut(SubDomain):
def inside(self, x, on boundary):
return on boundary and (x[0]*x[0]+x[1]*x[1]+(x[2]-L*Rmin)*(x[2]-L*Rmin)< 1.001*Rmin) and (x[2]>=L*Rmin)
class Sur�ntbas(SubDomain):
def inside(self, x, on boundary):
return on boundary and (x[0]*x[0]+x[1]*x[1]+(x[2]+L*Rmin)*(x[2]+L*Rmin)< 1.001*Rmin) and (x[2]<=-L*Rmin)
60
class Sur�ntcyl(SubDomain):
def inside(self, x, on boundary):
return on boundary and (x[0]*x[0]+x[1]*x[1]<1.001*Rmin) and (x[2]*x[2]<(L*Rmin)*(L*Rmin))
// Initialize sub-domain instances
sur�nthaut = Sur�nthaut()sur�ntbas = Sur�ntbas()sur�ntcyl = Sur�ntcyl()
sur�nthaut.mark(boundary markers, 1)sur�ntbas.mark(boundary markers, 2)sur�ntcyl.mark(boundary markers, 3)
ds = Measure('ds', domain=mesh, subdomain data=boundary markers)V = VectorFunctionSpace(mesh, "Lagrange", 2)
// De�ne functions
du = TrialFunction(V) // Incremental displacementv = TestFunction(V) // Test functionu = Function(V)ue = Function(V)a0 = Function(V) // Champ de direction des �bres au repos .
// Displacement from previous iteration
n = FacetNormal(mesh)
d = len(u)I = Identity(d) // Identity tensorF = I + grad(u) // Deformation gradientFe = I + grad(ue)Fg=inv(Fe)*F // Mod�ele de base dans l'article : F = Fe*FgC = F.T*F
// Grandeurs sur la con�guration �nale (r�eelle) appel�ee B t dans l'article :
a=F*a0 // Champ de �bres sur B t
A0=a0.T*a0lambdaA = inner(C,A0) // lambdaA = trace(A)A=a.T*a
a tild=a/lambdaA**0.5 // k a tild k2 = 1A tild=a tild.T*a tild
// A tild est d�e�nie comme tel �a cause de l'hypoth�ese de "�bres inextensibles".// Comme k a tild k2 = 1 = constante, on a alors R lambdaA bar = 0 ce qui donne tau lambdaA norm = 0 ,// tau lambdaA tens = 0 , puis on obtient bien donc f lambdaA = 0 .
A hat=Fe.T*A tild*Fe
// Grandeurs sur la con�guration interm�ediaire (�ctive) appel�ee Bt dans l'article :
n bar = inv(Fe)*n // Champ des vecteurs normaux unitaires sortanta bar=Fg*a 0 // Champ de �bres sur Bt
A bar=a bar.T*a bar // D�e�nition matricielle donnant f lambdaA = 0 sur Bt (idem que pour A tild sur B t).C bar = Fe.T*Fe
61
b bar = Fe*Fe.TJ bar = det(Fe)C bar hat = C bar/pow(J bar,2./3.)b bar hat = b bar/pow(J bar,2./3.)
// Invariants intervenant dans la fonction psi "�energie libre" :
I1 bar hat=tr(C bar hat)I2 bar hat=1/2*(tr(C bar hat)**2-tr(C bar hat**2))I4 bar hat=inner(C bar hat,A bar)
b=F*F.T // Tenseur de Cauchy-Green droit .
// Fonction "�energie libre" et second tenseur de Piola-Kirchlo� :
psi = kappa/2*(J bar-1)**2+mu/2*(I1 bar hat-3) + 0.5*K1/K2*(exp(K2*(I4 bar hat-1)**2)-1)
S bar =2*di�(psi, C bar)
// Tenseur pression de Kirchlo� : tau=Fe*S bar*transpose(Fe)
// Cas o�u l'on consid�ere le gon ement seulement hyper�elastique avec ajout des �bres :
// tau dev=(tau-tau.T)/2//R lambdaA=(A tild-A tild.T)/2
R lambdaA bar = A hat-C bar/3 // sur Bt .R lambdaA = A tild - (1./3.)*tr(A tild)*I // sur B t .
tau lambdaA norm=inner(tau,R lambdaA)tau lambdaA tens=tau lambdaA norm*A tild // sur B t .
tau lambdaA bar = inner(S bar, R lambdaA bar)S lambdaA bar=(tau lambdaA/lambdaA)*A barS A bar=S bar-inner(C bar*S bar*C bar,A bar)*A bar/lambdaA**2 // sur Bt .
tau vol bar = inner(C bar, S A bar)S vol bar=1/3*tau vol bar*inv(C bar) // sur Bt .
tau A tens=tau-inner(tau,A tild)*A tildtau vol norm=tr(tau A tens)tau vol tens=tau vol norm*(1./3.)*I // sur B t .
tau dev=tau-3/2*(tau vol tens+tau lambdaA tens) // sur B t .S dev bar=S bar-3/2*(S vol bar+S lambdaA bar) // sur Bt .
// Espace des invariants du tenseur de Spencer sur les con�gurations �nale (symbole " tild") et interm�ediaire// (symbole " bar") :
J1 tilde=dot(tau dev*a tild,tau dev*a tild) // sur B t .J2 tilde=inner(tau dev,tau dev) // sur B t .
J1 bar = inner((1/lamdaA)*(C bar*S bar dev*C bar*S bar dev*C bar), A bar) // sur Bt .
J2 bar = inner(C bar, S bar dev*C bar*S bar dev) // sur Bt .
// Fonction seuil pour la partie isochore correspondant �a l'�equation de l'ellipse dans l'espace des invariants// du tenseur de Spencer et �a partir de laquelle on calcule la fonction distance phi :
f dev=J1 bar/Y1**2+J2 bar/Y2**2-(1+h(alpha))
62
// Fonction seuil pour la partie dilatation volumique :
f vol=1/2*(tr(tau A tens)**2-tr(tau A tens**2))-(Y3+h vol(alpha,alpha vol))
// Fonction seuil pour la partie distorsion des �bres : f lambdaA=tau lambdaA tens-(Y4+h-lambdaA(alpha,alpha lambdaA))// Non prise en compte dans la simulation �nale (�bres inextensibles).
// Fonction de surcharge pour la partie distorsion des �bres : phi bar lambdaA=(f lambdaA+abs(f lambdaA))/4// Non prise en compte dans la simulation �nale (�bres inextensibles).
// Le multiplicateur de Lagrange theta d�e�ni dans l'article doit v�eri�er :
0=(1+h(alpha))*(theta-Y1**2)**2*(theta-Y2**2)**2-J2*Y2**2*(theta-Y1**2)**2-J1*Y1**2*(theta-Y2**2)**2
// Fonction de surcharge pour la partie dilatation volumique de la paroi :
phi bar vol=(f vol+abs(f vol))/4
// Fonction distance :
phi=-theta*(J1 bar/(theta-Y1**2)**2+J2 bar/(theta-Y2**2)**2)**0.5
// Fonction de surcharge pour la partie extension isochore de la paroi (m=1 dans l'article) :
phi bar dev=pow(phi,m)*conditional(gt(f dev,0), 1, 0)
// Calculs explicites des d�eriv�ees en fonction de theta donn�es en Appendix A de l'article :
Nu d =2((1+h(alpha))*(theta-Y1**2)**2*(theta-Y2**2)**2*(2*theta-Y1**2-Y2**2)-J2*Y2**2*(theta-Y1**2)**2-
J1*Y1**2*(theta-Y2**2)**2)
Nu 1 = Y1**2*(theta-Y2**2)**2/Nu dNu 2 = Y2**2*(theta-Y1**2)**2/Nu dNu h = -(theta-Y1**2)**2*(theta-Y2**2)**2/Nu d
dphidJ1 bar = theta**2/(2*phi*(theta-Y1**2)**2)dphidJ2 bar = theta**2/(2*phi*(theta-Y2**2)**2)dphidtheta = phi/theta-theta**2/phi*(J1 bar/(theta-Y1**2)**3+J2 bar/(theta-Y2**2)**3)
beta3 = m*phi**(m-1)*(dphidJ1 bar+Nu 1*dphidtheta)beta4 = m*phi**(m-1)*(dphidJ2 bar+Nu 2*dphidtheta)
dJ1 tilddtau = A tild*tau dev+tau dev*A tilddJ2 tilddtau = 2*tau dev
// Directions de l'�ecoulement viscoplastique (prises en compte dans le mod�ele):
sym R star = beta3*dJ1 tilddtau + beta4*dJ2 tilddtau // sur B t .
Sigma dev bar = S dev bar*C bar
symR bar star =beta3*(A hat*Sigma dev bar+(A hat*Sigma dev bar).T)+2*beta4*(C bar*Sigma dev bar+Sigma dev bar.T*C bar)
avec par d�e�nition symR bar star = (1./2.)*(C bar*R bar star+R bar star.T*C bar) // sur Bt .
R vol = I - A tildR vol star = tr(tau A tens)*R vol - tau A tens // sur B t .
R bar vol = I - A hatR vol star bar = (tr(S A bar))*R bar vol-C bar*S A bar*C bar // sur Bt .
63
// Flots plastiques :
// Flot d'�ecoulement plastique dans la direction symR bar star de la partie extension isochore lors de lacroissance de la paroi :
lambda dot=phi bar dev/eta
// Flot d'�ecoulement plastique dans la direction R vol star bar de la partie dilatation volumique lors de lacroissance de la paroi (avec la condition de conservation de l'�epaisseur qui donne la fonction scalaire zeta) :
lambda vol dot = beta1*phi bar vol/eta
// Flot d'�ecoulement plastique dans la direction R lambdaA bar lors de la partie (non consid�er�e dans l'article)de distorsion des �bres lors de la croissance de la paroi :
lambda lambdaA dot = beta2*phi bar lambdaA/eta // n�egligeable dans le cadre des simulations de l'article.
// Fonction scalaire zeta (�egale en fait �a lambda vol dot / lambda dot) :
product1 = symR bar star*n barproduct2 = R vol star bar*n barzeta = -(dot(n bar, product1)) / (dot(n bar, product2))
// Tenseur �nal d'�ecoulement viscoplastique :
D bar g = lambda dot*symR bar star+lambda vol dot*R vol star bar+lambda lambdaA dot*phi bar lambdaA
////////////////////////////////////////////////////////////////////////////////////////////////////////////
64
****** ANNEXE 6 *******
************************************************************************************************************
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
S�equence du �chier compare theta appendixB.py :
from future import print functionfrom dol�n import *from mshr import *
import mathimport u import numpy as npimport pickleimport time
parameters["allow extrapolation"] =Trueparameters["re�nement algorithm"] = "plaza with parent facets"parameters["form compiler"]["cpp optimize"] = Trueparameters["form compiler"]["optimize"] = Trueparameters["form compiler"]["representation"] = "u acs"parameters["form compiler"]["quadrature degree"] = 6
L=1. // rapport d'aspect : L dimensionn�ee/Rmin dimensionn�e
Rmin = 0.5delta = 0.01Rmax = Rmin+deltaPression = 0.52
// Material constants
E=1.65*1000nu = 0.3
mu=E/(2*(1+nu))K =E/(3*(1-2*nu))K1 = muK2 = 1.
// Read mesh :
mesh = Mesh("bacterie1.xml")
// Espace discret des fonctions FE :
velement = VectorElement( "Lagrange", tetrahedron, 2)
V = FunctionSpace(mesh,velement) // "Continuous Lagrange" (�egalement not�ee "CG" dans les options �c)pour les fonctions P2 (vectorielles) .
// Espaces de projection :
TT = TensorFunctionSpace(mesh,'DG',0) // "Discontinuous Lagrange" pour les tenseurs
65
Ve2 =FunctionSpace(mesh,'DG',0) // "Discontinuous Lagrange" pour les fonctions scalaires
du = TrialFunction(V) // Incremental displacementv = TestFunction(V) // Test functionu = Function(V)f = Function(V)anisotropie = Function(V)n = FacetNormal(mesh)
// Lesture des donn�ees de la r�eponse hyper�elastique sans �bres :
hdf PplusdP = HDF5File(mpi comm world(),"nom�chier0.52 0.0.h5", 'r')hdf PplusdP.read(u,"fun u")
// Tenseurs de base :
d = len(u)I = Identity(d)F = I + grad(u)J = det(F)C = F.T*Fb = F*F.TE = (C - I)/2E = variable(E)
C hat = pow(J,-2./3.)*Cb hat = pow(J,-2./3.)*b
// Comme a = (0, 1, 0)t , tr(A)-1 = 0, ce qui donne l'expression de tau suivante (cf Table 1., p. 757 del'article) :
tau = K*J*(J-1)*I + mu*(b hat-(1./3.)*tr(b hat)*I)
sigma = tau/J
// Cela �equivaut donc �a consid�erer le cas A=0 (pas de �bres) pour le calcul de tau dev, o�u ce tenseur s'�ecritalors simplement :
tau dev=tau-1.0/3.0*tr(tau)*I
J2=inner(tau dev,tau dev)J1=0*J2
a1 = Constant((1.0, 0.0, 0.0))a2 = Constant([0., 1., 0.])a3 = Constant([0., 0., 1.])
sigma projo = project(sigma,TT)
r = (Rmin+Rmax)/2.
sigma pro eval = sigma projo(r, 0., 0.)tau dev projo = project(tau dev,TT)tau dev pro eval = tau dev projo(r, 0., 0.)
print(sigma pro eval)print("tau dev =")print(tau dev pro eval)
66
P tilde = Pression/(Rmax**2/Rmin**2-1)
sigma r = -P tilde*(Rmax**2/r**2-1.)sigma theta= P tilde*(Rmax**2/r**2+1.)sigma z = P tilde
print(sigma r)print(sigma theta)print(sigma z )
M = np.array(((-1., 0., 0.), (0., 0., 0.), (0., 0., 1.)))
J proj = project(J, FunctionSpace(mesh,'DG',0))J2 proj = project(J2, FunctionSpace(mesh,'DG',0))
tau dev analytic = J proj(r, 0., 0.)*P tilde*Rmax**2/(r**2)*M
print("tau dev analytic =")print(tau dev analytic)
J tilde 1 = 0.0J tilde 2 = 2*J proj(r, 0., 0.)**2*P tilde**2*pow(Rmax,4.)/(pow(r,4.))
print("J tilde 1 =")print(J tilde 1)print("J tilde 2 =")print(J tilde 2)print("J 2 =")print(J2 proj(r, 0., 0.))
// Calculer les racines avec J1, J2
Y1 = 10. // Cas 5.2.2 (mature cell)Y2 = 10. // Cas 5.2.2 (mature cell)
// De�ne func h ( mod�ele uni-axial adopt�e dans ce cas , cf p.767, x 4.5.3. de l'article) :
sigma 0 = 0.5 // (Mpa)sigma y = 0.3 // (Mpa)h1 = 20.6 // cas 5.2.2h2 = 20.0 // cas 5.2.eta = 9.677745*1e6 // cas 5.2.2t = 1.0 // valeur d'exemple !t bar = t/eta // (attention a mettre en MPa(-1))t bar s = 1./abs(h1*sigma y+h2*(sigma 0-sigma y))
// temps caracterisant la saturation de la fonction func alpha .
t bar s wall = 1./(h1*sigma y)
// temps caract�eristique de la paroi isol�ee , i.e. abs(h2)=0 (pour t bar s tendant vers +in�ni, cf �g.6.c) ,paragraphe 4.5) .
C3 = sigma y*h2C2 = h1*sigma y - h2*(sigma 0-sigma y)C1 = (C2*t bar s+1.)/(C2*t bar s-1.)
func h = (C1*(1.0-C2*t bar s)+(1.0+C2*t bar s)*exp(-t bar/t bar s))/(2*C3*t bar s*(C1-exp(-t bar/t bar s)))
// theta racine de :
67
// f3 = (1.+func h)*(theta-Y1**2)**2*(theta-Y2**2)**2-J bar 2*(Y2**2)*(theta-Y1**2)**2-J bar 1*(Y1**2)*(theta-Y2**2)**2
//On choisit de diviser l'�equation f3=0 par Y1*Y2 (= 100) pour diminuer les erreurs num�erique dans lecalcul des racines theta i (i2f1; 2; 3; 4g).
// Coe�cients de l'�ecriture canonique de f4 = f3/(Y1*Y2), c'est-�a-dire f3/100 num�eriquement et dans cecas:
a = (1.+func h)
b = -2*a*(Y1/Y2+Y2/Y1)
c = (a*((Y1/Y2)**2+(Y2/Y1)**2) - J2/Y1**2 + 4*a - J1/Y2**2)
d =2*(Y1/Y2*(J2/Y1**2-a)+(J1/Y2**2-a)*Y2/Y1)
e =-J1/Y1**2-J2/Y2**2+a
// On cherche les racines du polynome :
f4 = a*pow(theta, 4) + b*pow(theta,3) + c*(theta**2) + d*theta + e
// Formule generale donnee sur wikipedia :
delta 0 = c**2-3*b*d +12*a*edelta 1 = 2*pow(c,3.) - 9*b*c*d+ 27*b**2*e +27*a*d**2 - 72*a*c*e
delta = (-1./27.)*(delta 1**2-4*pow(delta 0,3.))
p = (8*a*c-3*b**2)/(8*a**2)
q = (pow(b,3.)-4*a*b*c+8*a**2*d)/(8*pow(a,3.))
c2=conditional(lt(delta,0.), Constant(1.0), Constant(0.0))
notc2=conditional(ge(delta,0.), Constant(1.), Constant(0.))
Qo=(delta 1+sqrt(abs(-27*delta)))/2.
co=conditional(lt(Qo,0.), Constant(1.), Constant(0.))
Q = (-1)**(1*co)*pow(abs(Qo), 1./3.)*c2+1.*notc2
p proj = project(p, Ve2)
S2=(-2*p/3.+(1/(3*a))*(Q+delta 0/Q))*c2
S2 proj = project(S2, Ve2)
c3=conditional(ge(S2,-1e-10), Constant(1.), Constant(0.))
notc3=conditional(le(S2,0.), Constant(1.), Constant(0.))
S = (1./2.)*sqrt(abs(S2))*c2*c3+notc3*1.0
M1=(-4*S**2-2*p+q/S)*c2*c3
c4=conditional(ge(M1,0), Constant(1.), Constant(0.))
68
M2=(-4*S**2-2*p-q/S)*c2*c3
c5=conditional(ge(M2,0), Constant(1.), Constant(0.))
// Y1**2/(Y1*Y2) = Y1/Y2 et Y2**2/(Y1*Y2) = Y2/Y1, pour les conditions sur la d�e�nition de theta (cfx2. Physique d'une cellule �a paroi) :
cond1 = conditional(lt(-b/(4.*a)-S+(1./2.)*sqrt(abs(M1)), Y1/Y2), Constant(1.), Constant(0.))cond2 = conditional(lt(-b/(4.*a)-S+(1./2.)*sqrt(abs(M1)), Y2/Y1), Constant(1.), Constant(0.))cond3 = conditional(lt(-b/(4.*a)-S-(1./2.)*sqrt(abs(M1)), Y1/Y2), Constant(1.), Constant(0.))cond4 = conditional(lt(-b/(4.*a)-S-(1./2.)*sqrt(abs(M1)), Y2/Y1), Constant(1.), Constant(0.))cond5 = conditional(lt(-b/(4.*a)+S+(1./2.)*sqrt(abs(M2)), Y1/Y2), Constant(1.), Constant(0.))cond6 = conditional(lt(-b/(4.*a)+S+(1./2.)*sqrt(abs(M2)), Y2/Y1), Constant(1.), Constant(0.))cond7 = conditional(lt(-b/(4.*a)+S-(1./2.)*sqrt(abs(M2)), Y1/Y2), Constant(1.), Constant(0.))cond8 = conditional(lt(-b/(4.*a)+S-(1./2.)*sqrt(abs(M2)), Y2/Y1), Constant(1.), Constant(0.))
cond1 1 = c2*c3*c4*cond1*cond2cond2 2 = c2*c3*c4*cond3*cond4cond3 3 = c2*c3*c5*cond5*cond6cond4 4 = c2*c3*c5*cond7*cond8
// Les racines sont :
r 1 = (-b/(4*a)-S+0.5*sqrt(abs(M1)))*cond1 1r 2 = (-b/(4*a)-S-0.5*sqrt(abs(M1)))*cond2 2r 3 = (-b/(4*a)+S+0.5*sqrt(abs(M2)))*cond3 3r 4 = (-b/(4*a)+S-0.5*sqrt(abs(M2)))*cond4 4
// Les racines "candidates" pour la valeur de theta de l'article sont donc :
theta 1=Y1*Y2*r 1theta 2=Y1*Y2*r 2theta 3=Y1*Y2*r 3theta 4=Y1*Y2*r 4
theta 1 proj = project(theta 1,Ve2)theta 2 proj = project(theta 2,Ve2)theta 3 proj = project(theta 3,Ve2)theta 4 proj = project(theta 4,Ve2)
print(theta 1 proj(r,0,0))print(theta 2 proj(r,0,0))print(theta 3 proj(r,0,0))print(theta 4 proj(r,0,0))
// En appendix B , theta est donnee par :
theta analytic 1 = Y2**2+sqrt(J2/(1.+func h))*Y2theta analytic 2 = Y2**2-sqrt(J2/(1.+func h))*Y2
theta analytic 1 proj = project(theta analytic 1,Ve2)theta analytic 2 proj = project(theta analytic 2,Ve2)
print(theta analytic 1 proj(r,0,0))print(theta analytic 2 proj(r,0,0))
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
69
****** ANNEXE 7 *******
************************************************************************************************************
Correction �nale donnant le bon calcul du multiplicateur de Lagrange � de l'article, dans le�chier calcul racines fenics.py :
from future import print functionfrom dol�n import *from mshr import *
import mathimport u import numpy as npimport pickleimport time
// D�ebut du �chier sans int�eret ici :
[ ...................................................................]
a = (1.+func h)b = -2*a*(Y1/Y2+Y2/Y1)c = (a*((Y1/Y2)**2+(Y2/Y1)**2) - J2/Y1**2 + 4*a - J1/Y2**2)d =2*(Y1/Y2*(J2/Y1**2-a)+(J1/Y2**2-a)*Y2/Y1)e =-J1/Y1**2-J2/Y2**2+a
// Formule g�en�erale donn�ee sur Wikipedia mais adapt�ee au probl�eme cette fois-ci !
delta 0 = c**2-3*b*d + 12*a*edelta 1 = 2*pow(c,3.) - 9*b*c*d+ 27*b**2*e +27*a*d**2 - 72*a*c*edelta = (-1./27.)*(delta 1**2-4*pow(delta 0,3.))p = (8*a*c-3*b**2)/(8*a**2)q = (pow(b,3.)-4*a*b*c+8*a**2*d)/(8*pow(a,3.))
c2=conditional(le(delta,0.), Constant(1.0), Constant(0.0)) // c2=1 si delta � 0, c2 = 0 sinon .notc2=conditional(gt(delta,0.), Constant(1.), Constant(0.)) // notc2= 1 - c2 .
// D�e�nition de Q0 en tant que nombre complexe :
QoRe=(delta 1+c2*sqrt(abs(27*delta)))/2. // Partie r�eelle de Qo .QoIm=notc2*sqrt(abs(27*delta))/2. // Partie imaginaire de Qo .QoNo=sqrt(QoRe**2+QoIm**2) // Norme de Qo .
Qoargs=asin(QoIm/QoNo) // Arcsinus(Qo)Qoargc=acos(QoRe/QoNo) // Arccosinus(Qo)
coppo=conditional(le(Qoargs,0.), Constant(1.0), Constant(0.0))*(-1)+conditional(gt(Qoargs,0.), Constan-t(1.), Constant(0.))*1 // coppo = -1 si Arcsinus(Qo) � 0 , coppo = 1 sinon.
Qoarg= coppo*Qoargc // Qoarg = Arg(Qo) = coppo*Arccosinus(Qo) 2 [-�, +�] , Arg doit etre bijective.
// Pour calculer Q on doit choisir entre la racine cubique r�eelle (not�ee Q0) de Qo ou l'une de ses deux racinescubiques imaginaires, not�ee Q2 :
Q0Re =pow(QoNo,1/3.)*cos(Qoarg/3.) // Q0Re = Re(Qo1=3)Q0Im =pow(QoNo,1/3.)*sin(Qoarg/3.) // Q0Im = Im(Qo1=3)Q0No=sqrt(Q0Re**2+Q0Im**2) // Norme de Q0No
70
Q2Re =pow(QoNo,1/3.)*cos(Qoarg/3.+2*pi/3) // Q2Re = Re(Qo1=3*exp(2*j*�/3)) , o�u j2 = -1 .Q2Im =pow(QoNo,1/3.)*sin(Qoarg/3.+2*pi/3) // Q2Im = Im(Qo1=3*exp(2*j*�/3)) , o�u j2 = -1 .
Rappel : S2=(-2*p/3.+(1/(3*a))*(Q+delta 0/Q))*c2 dans le code (incorrect) sans �elimination des racinesimaginaires.
S0Re=-2*p/3.+(1/(3*a))*(Q0Re+delta 0*Q0Re/Q0No**2) // Partie r�eelle de S2 .S0Im=1/(3*a)*(Q0Im-delta 0*Q0Im/Q0No**2) // Partie imaginaire de S2 .S0No=sqrt(S0Re**2+S0Im**2) // S0No = k S0 k2.
// Prise en compte de l'erreur num�erique sur la projection de la fonction conditional :
c000= conditional(gt(S0No,1e-12), 1., 0.) // c000 = 1 si S0No =pS0 > 10�12 , c000 = 0 sinon.
notc000= conditional(le(S0No,1e-12), 1., 0.) // notc000 = 1-c000 , et dans ce cas on prend une autre racinecubique, Q2 en l'occurrence.
// La troisi�eme racine cubique de Qo �etant le conjugu�e de Q2, consid�erer l'autre racine cubique imaginairede Qo revient au meme vu qu'elles donnent chacune la meme valeur du module de Q, not�e QNo ci-dessous.
// D�e�nition de Q en tant que nombre complexe :
QRe =Q0Re*c000+Q2Re*notc000QIm =Q0Im*c000+Q2Im*notc000QNo=sqrt(QRe**2+QIm**2)
// D�e�nition de S2 en tant que nombre complexe :
S2Re=-2*p/3.+(1/(3*a))*(QRe+delta 0*QRe/QNo**2)S2Im=1/(3*a)*(QIm-delta 0*QIm/QNo**2)S2No=sqrt(S2Re**2+S2Im**2)S2args=asin(S2Im/S2No)S2argc=acos(S2Re/S2No)
coppoS2=conditional(le(S2args,0.), Constant(1.0), Constant(0.0))*(-1)+conditional(gt(S2args,0.), Constan-t(1.), Constant(0.))*1
S2arg= coppoS2*S2argc // Arg(S2) 2 [-�, �]
// S = 0.5*pS2 :
SRe = (1./2.)*sqrt(S2No)*cos(S2arg/2.)SIm = (1./2.)*sqrt(S2No)*sin(S2arg/2.)SNo=sqrt(SRe**2+SIm**2)
// D�e�nition de M1 en tant que nombre complexe :
M1Re=-S2Re-2*p+q*SRe/SNo**2M1Im=-S2Im-q*SIm/SNo**2M1No=sqrt(M1Re**2+M1Im**2)M1args=asin(M1Im/M1No)M1argc=acos(M1Re/M1No)
coppoM1=conditional(le(M1args,0.), Constant(1.0), Constant(0.0))*(-1)+conditional(gt(M1args,0.), Con-stant(1.), Constant(0.))*1
M1Arg= coppoM1*M1argc
// D�e�nition de M2 en tant que nombre complexe (idem) :
M2Re=-S2Re-2*p-q*SRe/SNo**2M2Im=-S2Im+q*SIm/SNo**2
71
M2No=sqrt(M2Re**2+M2Im**2)
M2args=asin(M2Im/M2No)M2argc=acos(M2Re/M2No)
coppoM2=conditional(le(M2args,0.), Constant(1.0), Constant(0.0))*(-1)+conditional(gt(M2args,0.), Con-stant(1.), Constant(0.))*1
M2Arg= coppoM2*M2argc
// D�e�nition des racines theta i en tant que nombres complexes :
theta 1Re = Y1*Y2*(-b/(4*a)-SRe+0.5*sqrt(M1No)*cos(M1Arg/2.))theta 2Re = Y1*Y2*(-b/(4*a)-SRe-0.5*sqrt(M1No)*cos(M1Arg/2.))theta 3Re = Y1*Y2*(-b/(4*a)+SRe+0.5*sqrt(M2No)*cos(M2Arg/2.))theta 4Re = Y1*Y2*(-b/(4*a)+SRe-0.5*sqrt(M2No)*cos(M2Arg/2.))
theta 1Im = Y1*Y2*(-SIm+0.5*sqrt(M1No)*sin(M1Arg/2.))theta 2Im = Y1*Y2*(-SIm-0.5*sqrt(M1No)*sin(M1Arg/2.))theta 3Im = Y1*Y2*(SIm+0.5*sqrt(M2No)*sin(M2Arg/2.))theta 4Im = Y1*Y2*(SIm-0.5*sqrt(M2No)*sin(M2Arg/2.))
// Condition "ne retenir que les racines r�eelles" (0 dans le cas imaginaire, avec une marge d'erreur num�eriquede projection prise �a 10�10 d'apr�es les tests) :
rcond1 = conditional(lt(theta 1Im/theta 1Re, 1e-10), Constant(1.), Constant(0.))rcond2 = conditional(lt(theta 2Im/theta 2Re, 1e-10), Constant(1.), Constant(0.))rcond3 = conditional(lt(theta 3Im/theta 3Re, 1e-10), Constant(1.), Constant(0.))rcond4 = conditional(lt(theta 4Im/theta 4Re, 1e-10), Constant(1.), Constant(0.))
// Condition de l'article :
cond1 = conditional(lt(theta 1Re, Y1**2), Constant(1.), Constant(0.))cond2 = conditional(lt(theta 1Re, Y2**2), Constant(1.), Constant(0.))cond3 = conditional(lt(theta 2Re, Y1**2), Constant(1.), Constant(0.))cond4 = conditional(lt(theta 2Re, Y2**2), Constant(1.), Constant(0.))cond5 = conditional(lt(theta 3Re, Y1**2), Constant(1.), Constant(0.))cond6 = conditional(lt(theta 3Re, Y2**2), Constant(1.), Constant(0.))cond7 = conditional(lt(theta 4Re, Y1**2), Constant(1.), Constant(0.))cond8 = conditional(lt(theta 4Re, Y2**2), Constant(1.), Constant(0.))
// Condition �nale pour obtenir la bonne racine � de l'article :
cond1 1 = rcond1 *cond1*cond2cond2 2 = rcond2*cond3*cond4cond3 3 = rcond3*cond5*cond6cond4 4 = rcond4*cond7*cond8
// La valeur du multiplicateur de Lagrange est alors donn�ee par :
theta bon =theta 1Re*cond1 1+theta 2Re*cond2 2+theta 3Re*cond3 3+theta 4Re*cond4 4
// �Evaluation et a�chage de theta bon en (r,0,0) :theta bon proj = project(theta bon, Ve2)print(theta bon proj(r,0,0))
******************************************************************************************************
72