-
Notifications
You must be signed in to change notification settings - Fork 0
/
epaisseur_fixe.tex
173 lines (121 loc) · 8.87 KB
/
epaisseur_fixe.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
%marqueur aux points de données
% courbe en dessous/en dessus / intervalle dichotomie / condition d'arrêt / eps essai-erreur
Dans cette partie, nous résolvons le problème variationnel avec l'épaisseur fixée à $e=0.1$ m, à l'aide d'un programme FreeFem++.
% link free fem
\begin{problem}{3}
Modélisons le pont, maillons-le et effectuons une simulation.
\end{problem}
En suivant les indications de l'énoncé, nous avons commencé par réaliser les bordures, correctement "orientées" et "subdivisées", de la coupe du pont (axe $y$),
selon la méthode vue en cours sur les maillages. Nous avons ensuite maillé la surface à l'aide de la fonction \emph{buildmesh} de FreeFem++.
On note $n$ le paramètre contrôlant le nombre de subdivisions pour une bordure du maillage. On a décomposé la structure en différentes bordures (segments et arcs de cercle).
Tout d'abord, sur la figure \ref{fig:maillage_default}, nous représentons une structure générée avec le même paramètre $n$ pour chaque bordure.
\begin{figure}
\begin{center}
\includegraphics[width=12cm]{imgs/all_maillage_default.PNG}
\caption{Maillage basique du pont}
\label{fig:maillage_default}
\end{center}
\end{figure}
On remarque cependant sur la figure \ref{fig:maillage_default} que la zone d'intérêt a un maillage très grossier, tandis que les pieds du pont sont très maillés.
On choisit donc de pondérer les subdivisions du maillage ($n/2$, $n$ et $2n$) selon le type de bordure et sa taille, ce qui donne la figure \ref{fig:maillage_pondere}.
\begin{figure}
\begin{center}
\includegraphics[width=12cm]{imgs/all_maillage_pondere.PNG}
\caption{Maillage plutôt homogène du pont}
\label{fig:maillage_pondere}
\end{center}
\end{figure}
Ensuite, nous donnons de la profondeur afin de passer à un maillage 3D avec la fonction \emph{buildlayers} de FreeFem++,
avec un paramètre $m=n/2$ qui est le nombre de subdivisions des bordures du maillage "en profondeur". On effectue, après cette opération, une rotation de la structure
avec la fonction \emph{movemesh3}, en pensant à spécifier \emph{orientation=-1} pour ne pas avoir un maillage non conforme.
On obtient ainsi la figure \ref{fig:maillage_3d}.
\begin{figure}
\begin{center}
\includegraphics[width=6cm]{imgs/all_maillage_3d.PNG}
\caption{Maillage 3D du pont}
\label{fig:maillage_3d}
\end{center}
\end{figure}
Après écriture de l'équation \ref{varia} dans le langage de FreeFem++, on obtient
l'aperçu de la structure déformée, ainsi que le déplacement en P en cherchant le déplacement vertical minimum (Figure \ref{fig:simu_def}).
On a choisi des éléments $\mathbb{P}_1$ car ce sont les éléments finis les plus simples qui permettent d'obtenir des solutions viables.
En effet, les éléments finis $\mathbb{P}_0$ (constants) posent problème car il y a la divergence de $\vec{u}$ (dérivées de première ordre).
Les éléments finis $\mathbb{P}_k, k \geq 2$ sont inutilement compliqués ("trop" de degrés de liberté) et alourdissent les calculs.
Sur les figures, $coef$ désigne le coefficient d'amplification du déplacement pour pouvoir l'observer, $dep$ le déplacement en P et $lateral$
le déplacement maximal selon l'axe $y$ (tout est en mètres).
\begin{figure}
\begin{center}
\includegraphics[width=6cm]{imgs/all_simu.PNG}
\includegraphics[width=12cm]{imgs/all_simu_label.PNG}
\caption{Résultat d'une simulation de toute la structure}
\label{fig:simu_def}
\end{center}
\end{figure}
On peut réaliser la même démarche pour la moitié de la structure en utilisant l'équation \ref{moitie} (Figure \ref{fig:simu_def_moitie}).
\begin{figure}
\begin{center}
\includegraphics[width=6cm]{imgs/half_simu.PNG}
\includegraphics[width=12cm ]{imgs/half_simu_label.PNG}
\caption{Résultat d'une simulation de la moitié de la structure}
\label{fig:simu_def_moitie}
\end{center}
\end{figure}
\begin{problem}{4}
Retravaillons le maillage pour avoir de meilleurs résultats et vérifier les propriétés de convergence.
\end{problem}
Nous pouvons remarquer que le déplacement n'est pas le même entre la moitié de la structure et sa totalité (33 cm par rapport 21 cm).
Cela pourrait donc signaler que le maillage n'est pas suffisamment fin pour que la solution approchée ait convergé vers la solution exacte.
Nous allons donc utiliser trois techniques pour faire converger les solutions :
\begin{itemize}
\item Un raffinement manuel du maillage. On augmente donc $n$ et $m$ respectivement de 5 et de 2 à chaque itération, en partant de 10 et de 5.
\item Un raffinement semi-automatique du maillage : automatique dans le plan de coupe avec \emph{adaptmesh} et manuel en profondeur. On utilise \emph{adaptmesh} afin d'adapter le maillage 2D
dans le plan $(xz)$,
et on augmente $m$ de 2 à chaque itération, en partant de 4. On spécifie
notamment une erreur (d'interpolation $\mathbb{P}_1$) sur \emph{adaptmesh} de 0.001 au lieu de 0.01 par défaut afin d'avoir des
résultats de convergence plus en accord avec la première méthode, malgré un temps de calcul plus long.
\item Un raffinement entièrement automatique avec la fonction \emph{mshmet} (qui retourne une métrique qui va permettre
d'améliorer le maillage et qui sera passée en paramètre de la fonction ci-après) et \emph{mmg3d}.
On spécifie là une erreur de 0.0001 au lieu de 0.01, par un choix empirique.
\end{itemize}
\begin{figure}
\begin{center}
\includegraphics[width=16.5cm]{imgs/cvg.png}
\caption{Résultats des simulations (structure entière)}
\label{fig:cvg}
\end{center}
\end{figure}
D'après la figure \ref{fig:cvg}, on en déduit que le déplacement réel doit être proche de 49 cm. On constate une petite différence d'asymptote avec l'adaptation manuelle (47 cm par rapport à 50 cm),
qui pourrait être dûe par exemple par à la lenteur de la convergence ou, de manière plus probable, à des paramètres dans les fonctions d'adaptations du maillage
(semi-)automatiques pas suffisamment optimisés. Par exemple, diminuer le paramètre erreur $err$ de 0.001 à 0.0001 pourrait améliorer ces méthodes (mais cela aurait un
coût temporel conséquent). On constate cependant que la vitesse de convergence avec les fonctions d'adaptation de FreeFem++
et MMG est beaucoup plus rapide (moins d'itérations) avec les paramètres choisis : en partant d'un maillage simple, il y a besoin de peu d'itérations pour trouver un maillage satisfaisant.
On effectue la même étude de convergence pour la demi-structure (figure \ref{fig:h_cvg}).
\begin{figure}
\begin{center}
\includegraphics[width=16.5cm]{imgs/cvgH.png}
\caption{Résultats des simulations (demi-structure)}
\label{fig:h_cvg}
\end{center}
\end{figure}
Les simulations sur la demi-structure sont en accord avec la structure entière (autour de 49 cm).
Pour la suite des simulations, on choisit donc un maillage manuel avec $n=30$ et $m=15$, qui allie bonnes performances (1 seconde de calcul environ) avec une précision qui semble satisfaisante.
Le détail des techniques d'adaptation de maillage peut être trouvé dans le code, disponible en annexe \ref{source_code}.
La figure \ref{fig:maillage_auto} montre une adaptation de maillage automatique.
\begin{figure}
\begin{center}
\includegraphics[width=7cm]{imgs/half_maillage_auto.PNG}
\caption{Exemple de maillage adapté automatiquement (demi-structure)}
\label{fig:maillage_auto}
\end{center}
\end{figure}
Les simulations ont pris quelques minutes pour être calculées.
Il aurait pu être intéressant d'utiliser \emph{FreeFem++-mpi} et \emph{MUMPS-mpi} afin d'accélérer les calculs sur nos PCs.
Il serait également possible de comparer les temps de chaque méthode pour savoir laquelle employer afin d'obtenir les meilleures performances avec la meilleure précision.
Dans tous les cas, il faut spécifier à toutes ces fonctions les "bons" arguments pour obtenir des résultats satisfaisants.
%optimisation temps
% étude convergence
% problème 2d équivalent
% adaptation de maillage 3d mmg3d et mshmet
% mumps, parallèle autre exécutable freefem
% erreur de valeurd
% bibliographie freefem ?