Post on 31-Oct-2020
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Modélisation et inversionen géophysique
1 - Modélisation : Introduction
Bernard Giroux(bernard.giroux@ete.inrs.ca)
Institut national de la recherche scientifiqueCentre Eau Terre Environnement
Version 1.2.3Hiver 2019
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation
Dans ce cours, la modélisation fait référence au calcul de laréponse géophysique d’un modèle numérique donné.
estimé des paramètres du modèle → modèle quantitatif →prédiction des données
La modélisation directe peut servir à1 planifier et déterminer les paramètres de levés de terrain ;2 étudier la sensibilité des méthodes à une distribution donnée
des propriétés du sous-sol, ou à une variation de cespropriétés dans le temps ;
3 calculer la réponse des modèles lors de l’inversion.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation - Planification des levés
Source : http://www.gedco.com
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation - Planification des levés
Source : http://www.gedco.com
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation - Études de sensibilité
Receiver depth [m]
Distance [m]
P-wave velocity
3000 60004500 7500[m/s]
LORRAINEUTICA
TRENTON
BEEKMANTOWN
CAIRNSIDE
COVEY HILL
GRENVILLE BASEMENT
0
500
1500
1000
0
500
1500
1000
0 1000 2000Ti
me
[s]
Dept
h [m
]
0.2
0.4
0.6
0.8
1
14001000600200
14001000600200
0.2
0.4
0.6
0.8
1
Tim
e [s
]
Dept
h [m
]
Source : Perozzi et al., 2017
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation - Études de sensibilité
Offset [m]
Dep
th [m
]
0
500
1500
1000 0.25
0.5
0.75
[CO
2 sat
urat
ion]
0
0
0.2
0.4
0.6
0.8
Tim
e [s
]
0 1000 2000
15 YEARS AFTER INJECTION
100 200 400 500300 600 700
0 1000 2000
50 YEARS AFTER INJECTION(no injection after 15 years)
100 200 400 500300 600 700
5 YEARS AFTER INJECTION
0 1000 2000
Lorraine
Utica shaleTrenton
BeekmantownCairnside
Covey HillBasement
100 200 400 500300 600 700
Distance [m]
Time-lapse
Baseline
Potsdam top
Potsdam bottom
Potsdam top
Potsdam bottom
Lorraine
Utica shaleTrenton
BeekmantownCairnside
Covey HillBasement
Lorraine
Utica shaleTrenton
BeekmantownCairnside
Covey HillBasement
Potsdam top
Potsdam bottom
Basementrefelction
Source : Perozzi et al., 2017
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation - Inversion
Problème direct
estimé des paramètres du modèle → modèle quantitatif →prédiction des données
Problème inverse
données observées → modèle quantitatif →estimé des paramètres du modèle
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Règles d’or en modélisation
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Règles d’or en modélisation
Valider son codepar comparaison avec une solution analytiquepar comparaison avec un autre code éprouvétester les cas extrêmes (forts contrastes de propriétés, positionarbitraire des sources/récepteurs, limites du domaine demodélisation, ...)
Connaître les limites des algorithmes et méthodes utilisésConnaitre un débogueur pour le language utilisé
Python : spyder est un IDE (integrated development environment)avec débogueur intégréMATLAB : le débogueur est intégré à l’éditeur
Optimiser la performance avec un outil de profilagePython : modules cProfile ou profileDans MATLAB : doc profile
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Notions utiles en calcul numérique
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision des calculs
Le fait de négliger la précision des calculs peut avoir desconséquences dramatiques.Trois cas tristement célèbres :
Des erreurs d’arrondi mal gérées auraient entraîné le mauvaisfonctionnement d’un missile Patriot en 1991, causant la mort de28 personnes ;L’explosion de la fusée Ariane 5 en 1996 aurait été causée parune erreur de dépassement en assignant une valeur réelle à unevariable déclarée comme un entier ;Une modélisation numérique par éléments finis imprécisecouplée à un mauvais encrage a causé le naufrage de laplate-forme pétrolière Sleipner A en 1991, causant des pertes deplus de 700 millions de dollars.
Source : http://www.ima.umn.edu/~arnold/disasters/disasters.html
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision des calculs
Dans un ordinateur, les nombres sont représentés par unsystème binaire.Les entiers peuvent être représentés de façon exactes, enautant qu’ils se situent à l’intérieur d’une fourchette devaleurs données,
La largeur de cette fourchette dépend du nombre de bits utiliséspour représenter les nombres, e.g. pour 4 bits
0 = 00002 = 0 × 23 + 0 × 22 + 0 × 21 + 0 × 201 = 00012 = 0 × 23 + 0 × 22 + 0 × 21 + 1 × 204 = 01002 = 0 × 23 + 1 × 22 + 0 × 21 + 0 × 2015 = 11112 = 1 × 23 + 1 × 22 + 1 × 21 + 1 × 20
Une erreur de dépassement surviendrait si on tentait s’assignerla valeur 16 à un entier 4 bits.Un bit est utilisé pour représenter le signe dans le cas d’entierspositifs et négatifs.
Quelles sont les limites si on utilise 32 bits, 64 bits?
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision des calculs
Les réels sont représentés en virgule flottante, en utilisantun signe s ;une mantisse (ou significande) m ;un exposant e ;
sous la formes × m × Be−E,
où B est la base de la représentation et E est le biais del’exposant.La norme IEEE 754 (la plus courante et celle utilisée parPython et MATLAB) définie B=2, et comporte deux formats :32 bits et 64 bits, soit
Précision s e m E Précision Ch. significatifssingle (32 bits) 1 bit 8 bits 23 bits 127 24 bits environ 7double (64 bits) 1 bit 11 bits 52 bits 1023 53 bits environ 16
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision des calculs
Avec la norme IEEE 754, la mantisse est “normalisée”, i.e. siles premiers bits du nombre en mantisse sont des zéros, ondéplace vers la gauche (left-shift) les bits jusqu’au 1e bit égalà 1 (en ajustant l’exposant en conséquence)
comme ce bit est toujours 1, il n’est pas stocké et on augmenteainsi la précision d’un bit ;la mantisse a la valeur numérique 1.f, où f est la fraction définiepar les bits de m ;
pour la fraction f, la puissance de la base après le point est négative,i.e. 1.10102 est équivalent à1 × 20 + 1 × 2−1 + 0 × 2−2 + 1 × 2−3 + 0 × 2−4,soit 1 + 0.5 + 0.125 = 1.625
Quelques exemples de nombre représentés en double0 01111111111 0000 (+ 48 autres zéros) = +1×21023−1023×1.02 = 1.1 01111111111 0000 (+ 48 autres zéros) = -1×21023−1023×1.02 = -1.0 01111111111 1000 (+ 48 autres zéros) = +1×21023−1023×1.12 = 1.50 10000000000 0000 (+ 48 autres zéros) = +1×21024−1023×1.02 = 2.0 10000000001 1010 (+ 48 autres zéros) = +1×21025−1023×1.10102 = 6.5
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision des calculs – Erreurs d’arrondi
Les réels ne sont pas toujours représentés de façon exacte,e.g. évaluez le nombre 123456789 en simple précision.Python : https://github.com/bernard-giroux/geo1302/blob/master/p_erreur_single.ipynbMATLAB : https://github.com/bernard-giroux/geo1302/blob/master/m_erreur_single.ipynb
Les opérations arithmétiques en virgule flottante ne sont pasexactes, mêmes si les nombres sont représentés exactement.
Par exemple, pour additionner deux entiers, les bits de lamantisse du plus petit nombre sont décalés vers la droitejusqu’à ce que l’exposant soit le même que celui du plus grandnombre, et on perd alors de la précision car des bits sont“perdus” à cause du décalage vers la droite.
La précision matérielle (machine accuracy) 𝜖m est définiecomme le plus petit nombre qui, lorsqu’additionné à 1.0,donne une valeur différente de 1.0
Pour les float IEEE 754, 𝜖m vaut environ 1.19×10−7
Pour les double IEEE 754, 𝜖m vaut environ 2.22×10−16
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision – Erreurs d’arrondi
On peut voir 𝜖m comme la précision de la partiefractionnelle, i.e. correspondant au changement causé par lebit le moins significatif de la mantisse.La quasi totalité des opérations arithmétiques entraîne uneerreur d’au moins 𝜖m.Ce type d’erreur est appelé erreur d’arrondi (roundoff error).Les erreurs d’arrondi s’accumulent au cours des calculs.
En étant chanceux, N opérations entraînent une erreur de√N𝜖m, si le signe des erreurs est aléatoireTrès fréquemment, il y a un biais de signe et on a alors N𝜖mCertaines opérations peuvent entraîner une erreur d’arrondibeaucoup plus grande que 𝜖m, e.g. la soustraction de deuxnombres très rapprochés donne un résultat avec peu de bitssignificatifs
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision – Erreurs de troncation
En calcul numérique, il est fréquent de calculer uneapproximation “discrète” d’une quantité “continue” ;
e.g. une intégrale est évaluée numériquement en calculant unefonction à un nombre fini de points, plutôt qu’en “tout” point.
Les erreurs de troncation surviennent lorsque le résultatobtenu par calcul numérique diffère de la réponse vraie.Contrairement aux erreur d’arrondi, il est possible decontrôler la magnitude des erreurs de troncation
e.g. en choisissant avec soin le nombre de points pour évaluerune intégrale.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Précision – Stabilité
Une méthode est dite instable lorsqu’une erreur d’arrondiintroduite au début des calculs est progressivementamplifiée, au point de corrompre complètement la solution.Sur un ordinateur “parfait” une telle méthode seraitutilisable.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Gestion de la mémoire
Lors de l’exécution d’un code, la création de variablesaccapare une certaine quantité de mémoire vive (RAM).
Si le nombre de variables est élevé, toute la mémoire physiquedisponible peut être consommée ;Pour éviter le plantage du programme, le systèmed’exploitation utilise alors un espace disque (2 à 3 ordres degrandeur plus lent que la RAM) pour alouer plus de mémoire(swap space).
La quantité de mémoire se mesure en octet (byte), où unoctet vaut 8 bits.Par convention et abus de language,
un kilooctet vaut 1024 (210) octets (on devrait utiliser unkibioctet...) ;un mégaoctet (mébioctet) vaut 1 048 576 (220) octets ;un gigaoctet (gibioctet) vaut 1 073 741 824 (230) octets ;un téraoctet (tébioctet) vaut 1 099 511 627 776 (240) octets ;etc...
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Gestion de la mémoire
Contrairement au C/C++ ou au FORTRAN, Python etMATLAB gèrent l’allocation de la mémoire de façontransparente.Avantage : simplifie la gestion des variables et accélère ledéveloppement ;Désavantage : peut affecter la performance car lesopérations de gestion de mémoire sont “lentes”
Lorsque la taille des tableaux est connue, important de créer cestableaux à la bonne taille ;MATLAB : lors d’appels de fonctions, les variables enarguments sont passées par référence. Si la variable est modifiée,une copie est créée automatiquement (inutile si on retourne lerésultat à la variable initiale).
Désavantage : peut entraîner des boguesComme les variables ne sont pas déclarées avant d’êtreinitialisées, on peut écraser le contenu d’une variable existanteen créant une nouvelle variable sous le nom d’une variableexistante (e.g. à l’intérieur d’une boucle).
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Gestion de la mémoire
Désavantage : structures potentiellement inefficacesMATLAB créé une entête pour chaque tableau, pour y stockerla taille du tableau et la classe de variable ;Pour des structures, MATLAB génère une entête pour lastructure, pour chaque champ de la structure et pour chaquevariable correspondant aux champs ;Soient deux variables contenant la même information
S1.R(1 ∶ 100, 1 ∶ 50)S1.G(1 ∶ 100, 1 ∶ 50)S1.B(1 ∶ 100, 1 ∶ 50)
et
S2(1 ∶ 100, 1 ∶ 50).RS2(1 ∶ 100, 1 ∶ 50).GS2(1 ∶ 100, 1 ∶ 50).B,
S1 contient 7 entêtes et S2 contient 15 004 entêtes.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Gestion de la mémoire
Désavantage (MATLAB) : pas de contrôle sur l’emploi de lamémoire cache
l’allocation manuelle de la mémoire permet de construire descodes cache-friendly ;En calcul haute performance, beaucoup d’efforts sont déployéspour optimiser l’utilisation de la mémoire cache.
Python : quelques modules disponibles (cachetools),@functools.lru_cache.
Source : http://www.talktoanit.com
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Calcul sériel et calcul parallèle
Calcul sériel : les opérations sont effectuées les unes à lasuite des autres ;
l’ordre dans lequel les opérations sont effectuées est prédictible.Calcul parallèle : des opérations sont effectuéessimultanément, sur plusieurs coeurs, processeurs, ounoeuds de calcul ;
l’ordre des opérations ne peut pas être prédit.Taxonomie de Flynn
SISD (Single Instruction, Single Data) : PC jusqu’à la fin desannées 90 ;SIMD (Single Instruction, Multiple Data) : unités de calculspécialisé (traitement du signal ou d’image) ;MIMD (Multiple Instructions, Multiple Data) : processeursmulti-coeur ;MISD (Multiple Instructions, Single Data) : beaucoup plusrarement utilisé.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Calcul sériel et calcul parallèle
Source : C.M.L. Burnett
LégendePU : Processeur (acronyme anglais de Processing Unit)Instruction Pool : ensemble des instructions disponibles pour leou les PUData Pool : ensemble des données nécessaires aux calculs
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Calcul sériel et calcul parallèle
Tout les algorithmes ne sont parallélisablesDifférents schémas (pattern) de parallélisation existent
Décomposition par tâches (task decomposition) ;Décomposition des données (data decomposition) ;et plusieurs autres (voir Mattson et al., 2004).
Certains problèmes scientifiques sont propices au schéma dedécomposition des données (les données sont séparées engroupes sur lesquels les opérations sont effectuéesindépendamment) :
multiplication de matrices ;différences-finies.
Le calcul scientifique parallèle n’est cependant pas limité auschéma de décomposition des données ;
Modélisation en parallèle de plusieurs tirs sismiques :décomposition par tâches.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Plateformes de calcul
Toutes les plateformes récentes permettent un certain degréde parallélisme (même vos téléphones intelligents).Plateformes courantes pour le calcul scientifique :
un ordinateur avec 1 ou quelques CPUs multi-coeurs ;la mémoire RAM est dite partagée, i.e. accessible à tous les coeurs ;architecture MIMD.
une grappe d’ordinateurs avec 2 ou plusieurs CPUsmulti-coeurs ;
la mémoire RAM est dite distribuée, i.e. chaque noeud n’a accès qu’àsa RAM.architecture MIMD.
GPU(s) (graphics processing unit), ajouté(s) aux plateformesprécédentes.
chaque GPU a sa propre RAM qui est indépendante de la RAM surla carte-mère ;architecture SIMD.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Discrétisation
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Généralités
En science de la Terre en général, les milieux étudiés sontfortement hétérogènes ou de géométrie complexe ;Il est généralement impossible de trouver une solutionanalytique pour résoudre les problèmes les plus communs ;L’approche privilégiée consiste à représenter le milieu parune distribution discrète des propriétés physiques d’intérêt,i.e. le milieu est discrétisé ;Le choix du type de discrétisation dépend
des algorithmes disponibles pour solutionner le système,du coût des calculs (temps et mémoire),et de la précision recherchée.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Types de maillage
Grilles régulières
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Types de maillage
Maillages non structurés
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Types de maillage
Multi-grid
1662 E Haber et al
(b)(a)
Figure 1. (a) OcTree and (b) its representation as a 2 × 4 × 2 (sparse) array. Each entry in thearray is the cell size.
u1
u2 u3
u4
u5
cellj
(ux2)1
(ux2)2
(ux2)3
(ux1)1
(ux1)2
Figure 2. Discretization of ∇u.
Given a particular OcTree grid one has to decide where to discretize the different variables.Here, similar to [3], we choose to use staggered discretization and discretize u at the nodes andm at cell centres. As shown in [4] this discretization of the optimization problem is h-elliptic.For the importance of h-elipticity, see [38].
2.2. Discretization of the forward problem
To discretize the forward problem on the OcTree grid we consider its Ritz form
minu
∫
!
[σ2
|∇u|2 − ub]
dx, (2.1)
rather than the PDE directly. To demonstrate, let us use a 2D example; the extension to 3D isstraightforward.
Consider the QuadTree cell plotted in figure 2. The quantity ∂u∂xi
is naturally discretizedto second order accuracy along the centres of the xi-edges of each cell, i = 1, 2. For theQuadTree in figure 2 we can write
(ux1
)2 = (2h)−1(u3 − u2) + O(h2)
(ux1
)1 = (2h)−1(u4 − u1) + O(h2)
(ux2
)1 = (2h)−1(u1 − u2) + O(h2)
(ux2
)2 = h−1(u4 − u5) + O(h2)
(ux2
)3 = h−1(u5 − u3) + O(h2).
Source : Haber et al., 2007
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Types de maillage
La génération de maillages non structurés est une opérationpouvant s’avérer complexe.Plusieurs mailleurs ont été conçus pour accomplir cettetâche, dont
gmsh, tetgen (C++)pygmsh, MeshPy, frentos (Python)iso2mesh, DistMesh (MATLAB)
et plusieurs autres dans la liste de la page http://www.robertschneiders.de/meshgeneration/software.html.En science de la Terre, des logiciels spécialisés comme
GOCADPetrel
peuvent également produire des maillages non structurés.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies
Les phénomènes géophysiques peuvent souvent être décritspar des équations aux dérivées partielles ;Les différences finies sont une façon d’approximernumériquement des dérivées ;La méthode des différences finies (MDF) constitue uneapproche conceptuellement simple et intuitive car leformalisme est proche de l’équation aux dérivées partielles ;Également, la mise en oeuvre est généralement simple car laMDF est implémentée sur des grilles régulières.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies
La définition classique de la dérivée d’une fonction u(x) est
u′(x) = lim∆x→0
u(x + Δx) − u(x)Δx (1)
Un ordinateur ne peut gérer la limite Δx → 0 ;L’idée est de définir un ensemble de points discrets xi, où lafonction u est évaluée (ui = u(xi)) ;La distance entre les points est Δxi = xi+1 − xi, ousimplement Δx si la distance est constante partout.
u(xi)u(xi+2)
u(xi+1)u(xi-2)u(xi-1)
xi-2 xi xi+1 xi+2xi-1ΔxiΔxi-2 Δxi-1 Δxi+1 Δxi+2
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies
Dans le cas discret, on a ainsi
u′(xi) ≈ u(xi + Δx) − u(xi)Δx =
ui+1 − uiΔx (2)
qui est nommé opérateur de différence avant ;Similairement, on a l’opérateur de différence arrière :
u′(xi) ≈ u(xi) − u(xi − Δx)Δx = ui − ui−1
Δx (3)
et l’opérateur de différence centré :
u′(xi) ≈ u(xi + Δx) − u(xi − Δx)2Δx =
ui+1 − ui−12Δx . (4)
Dans le cas discret, ces expressions donnent un résultatdifférent : comment quantifier l’erreur?
L’analyse par séries de Taylor peut nous donner la réponse.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
Partons de l’identité
u(x) = u(xi) + ∫x
xiu′(s)ds (5)
Cette relation tient après dérivation, i.e.
u′(x) = u′(xi) + ∫x
xiu″(s)ds (6)
En insérant (6) dans (5) et en intégrant, on trouve
u(x) = u(xi) + (x − xi)u′(xi) + ∫x
xi∫x
xiu″(s)dsds. (7)
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
En répétant l’opération n fois, on trouve
u(x) = u(xi) + (x − xi)u′(xi) + (x − xi)22! u″(xi) + ⋯ +
(x − xi)nn! u(n)(xi) + Rn+1 (8)
oùRn+1 = ∫
x
xi⋯ ∫
x
xiu(n+1)(s)(ds)n+1. (9)
L’équation (8) est la série de Taylor de la fonction u(x) en xi.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
Évaluons la précision de l’opérateur de différence avant.Développons la fonction u à xi+1 à partir de la série en xi, soit
u(xi+Δxi) = u(xi)+Δxi𝜕u𝜕x ∣
xi+
Δx2i2!
𝜕2u𝜕x2
∣∣∣∣xi+
Δx3i3!
𝜕3u𝜕x3
∣∣∣∣xi+… (10)
En réarrangeant on trouveu(xi + Δxi) − u(xi)
Δxi− 𝜕u
𝜕x ∣xi
= Δxi2!
𝜕2u𝜕x2 ∣
xi+
Δx2i3!
𝜕3u𝜕x3 ∣
xi+ …
⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟erreur de troncation
(11)
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
L’erreur de troncation est la différence entre la dérivéeexacte et sa représentation discrète
Pour des fonctions lisses et un pas Δxi petit, le 1e terme estutilisé pour caractériser l’ordre de grandeur de l’erreur ;Ce terme dépend de 𝜕2u
𝜕x2 et de Δx, ce dernier seulement surlequel il est possible d’agir pour réduire l’erreur ;La notation 𝒪(Δxi) est utilisée pour représenter le 1e terme del’erreur de troncation, i.e.
𝜕u𝜕x ∣
xi= u(xi + Δxi) − u(xi)
Δxi+ 𝒪(Δx). (12)
Pour l’opérateur de différence arrière, on trouve égalementune erreur en 𝒪(Δx), soit
u(xi) − u(xi − Δxi−1)Δxi−1
− 𝜕u𝜕x ∣
xi= − Δxi−1
2!𝜕2u𝜕x2 ∣
xi−
Δx2i−13!
𝜕3u𝜕x3 ∣
xi+ …
⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟⏟erreur de troncation
(13)
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
Pour l’opérateur de différence centré, l’erreur de troncationest obtenu en combinant les équations (10) et (13), ce quidonne (si Δxi−1 = Δxi = Δx)
ui+1 − ui−12Δx − 𝜕u
𝜕x ∣xi
= Δx23!
𝜕3u𝜕x3
∣∣∣∣xi+ … (14)
On a alors une convergence quadratique :
𝜕u𝜕x ∣
xi=
ui+1 − ui−12Δx + 𝒪(Δx2). (15)
Puisqu’on examine la convergence pour Δx → 0, on a que𝒪(Δx2) < 𝒪(Δx) ;
l’erreur est plus faible en utilisant un opérateur centré qu’enutilisant un opérateur avant ou arrière.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Séries de Taylor
Exercice sous Python/MATLABÉvaluez la fonction sinus dans l’intervalle [0, 4𝜋] avec unpas de 𝜋/10.Calculez la dérivée
avec l’opérateur avant ;avec l’opérateur centré.
Pour les deux dérivées discrètes, calculez l’erreur avec lasolution analytique.Répétez avec un pas de 𝜋/20.Comment varie l’erreur en fonction de l’opérateur et enfonction du pas?
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Ordres supérieurs
Les opérateurs précédents sont définis avec deux points, ondit qu’ils sont d’ordre 2.Que se produit-il si on utilise 4 points?Partons de l’équation (14)
ui+1 − ui−12Δx = 𝜕u
𝜕x + Δx23!
𝜕3u𝜕x3 + Δx4
5!𝜕5u𝜕x5 +
Δx67!
𝜕7u𝜕x7 + … + Δx2m
(2m + 1)!𝜕(2m+1)u𝜕x(2m+1) + … (16)
Utilisons maintenant les points xi−2 et xi+2, et remplaçons Δxpar 2Δx :
ui+2 − ui−24Δx = 𝜕u
𝜕x + (2Δx)23!
𝜕3u𝜕x3 + (2Δx)4
5!𝜕5u𝜕x5 +
(2Δx)67!
𝜕7u𝜕x7 + … (17)
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Ordres supérieurs
En multipliant (16) par 22 et en soustrayant le résultat à (17),on trouve
8(ui+1 − ui−1) − (ui+2 − ui−2)12Δx = 𝜕u
𝜕x − 4Δx45!
𝜕5u𝜕x5 − 20Δx6
7!𝜕7u𝜕x7 + … (18)
On remarque que l’erreur de troncation est maintenantd’ordre 4 :
𝜕u𝜕x =
ui−2 − 8ui−1 + 8ui+1 − ui+212Δx + 𝒪(Δx4) (19)
De façon générale, plus l’ordre de l’opérateur est élevé, plusfaible est l’erreur (Fornberg, 1998).
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Considérons la distribution verticale de la température dansla croûte terrestre.En l’absence de variations latérales, l’équation de la chaleuren régime permanent est
ddz (𝜆(z)dTdz ) = −A(z), (20)
où𝜆 est la conductivité thermique (W/m/K) ;T est la température (K) ;A est la production de chaleur (W/m3) ;z est la profondeur (m).
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Discrétisation dumilieu en Ncoucheshomogènes
SurfaceT0
Ti-1
Ti
Ti+1
T2
T1
TN
z0
zi-1
zi
zi+1
z2
z1
zN
λi-1, Ai-1
λi, Ai
λi+1, Ai+1
λ2, A2
λ1, A1
λN, AN
Δz
Prof
onde
ur cr
oiss
ante
, z
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Pour solutionner le problème, il est nécessaire de poser desconditions aux limites ;Considérons
une température connue en surface, T0 ;un flux de chaleurQ dans la Ne couche.
L’objectif est de déterminer les valeurs de température auxnoeuds de la grille.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Ti-1
Ti
Ti+1
zi-1
zi
zi+1
λi-1, Ai-1
λi, Ai
λi+1, Ai+1
zi-½
zi+½
Δz/2Δz/2
Considérons le ie noeud.En choisissant un opérateur centré de largeur Δz/2, ladérivée du terme entre parenthèses de l’équation (20) vaut
ddz (𝜆(z)dTdz )∣
zi=
𝜆i+1dTdz ∣zi+1/2 − 𝜆i
dTdz ∣zi−1/2
Δz (21)
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Avec également un opérateur centré de largeur Δz/2 pour ladérivée de la température, on trouve
ddz (𝜆(z)dTdz )∣
zi=
𝜆i+1 (Ti+1−Ti∆z ) − 𝜆i (
Ti−Ti−1∆z )
Δz (22)
En réarrangeant le terme de droite, on trouve𝜆i
Δz2Ti−1 −𝜆i+1 + 𝜆i
Δz2 Ti +𝜆i+1Δz2 Ti+1 (23)
L’équation (23) est égale à la production de chaleur à zi, soitA(z)∣zi
Puisque A est défini pour les couches et non aux noeuds, onprends la moyenne entre deux couches, i.e.
A(z)∣zi = Ai + Ai+12 (24)
Les équations (23) et (24) vont nous permettre de construireun système matriciel de la forme Ax = b où le vecteur x estle vecteur des températures.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
MaisL’équation (23) contient le terme Ti−1, ce qui pose unproblème en surface
Heureusement, on sait que la température T0 est déjà connueétant donnée les conditions aux frontières posées ;C’est une condition dite de Dirichlet, i.e. la valeur que la solutiondoit vérifier sur les frontières est spécifiée.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
En profondeur, le flux Q est connu.Par définition, le flux de chaleur vaut
Q = −𝜆𝜕T𝜕z (25)
Évalué dans la Ne couche avec un opérateur de différencearrière, on a
Q = −𝜆NTN − TN−1
Δz (26)ou bien
𝜆NΔz TN−1 − 𝜆N
Δz TN = Q. (27)Lorsqu’on spécifie les valeurs des dérivées que la solutiondoit vérifier sur les frontières, on a une condition dite deNeumann.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Le système matriciel peut maintenant se construire :
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎣
1 0 0 0 ⋯ 0 0 0𝜆1∆z2 − 𝜆2+𝜆1
∆z2𝜆2∆z2 0 ⋯ 0 0 0
0 𝜆2∆z2 − 𝜆3+𝜆2
∆z2𝜆3∆z2 ⋯ 0 0 0
⋮ ⋮ ⋮ ⋮ ⋱ ⋮ ⋮ ⋮0 0 0 0 ⋯ 𝜆N−1
∆z2 − 𝜆N+𝜆N−1∆z2
𝜆N∆z2
0 0 0 0 ⋯ 0 𝜆N∆z − 𝜆N
∆z
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎦
⎡⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣
T0T1T2T3⋮
TN−2TN−1TN
⎤⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦
=
⎡⎢⎢⎢⎢⎢⎢⎢⎣
T0−A1+A2
2−A2+A3
2⋮
−AN−1+AN2Q
⎤⎥⎥⎥⎥⎥⎥⎥⎦
(28)
où les valeurs de production de chaleur Ai sont interpoléesaux noeuds.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Différences finies - Exemple
Exercice sous Python/MATLABPartant des conditions
T0 = 280 K;Q = -55 mW/m2 ;
et considérant un milieu à 20 couches de 100 m d’épaisseurchacune.Calculez le profil vertical de température si
𝜆 = {1.8, 1.8, 1.8, 1.8, 1.8, 3.7, 3.7, 3.7, 3.7, 3.7, 2.4, 2.4, 2.4, 2.4, 2.4, 2.4, 3.5, 3.5, 3.5, 3.5}etA = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2.8×10−6, 2.8×10−6, 2.8×10−6, 2.8×10−6}
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Programmation orientée objet
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Motivation
Le développement de logiciels d’envergure moyenne àgrande pose plusieurs défis sur le plan de laprogrammation :
structure cohérente entre les éléments ;maintenance de cette structure ;organisation du code.
La programmation orientée objet (POO) offre plusieursavantages pour faciliter ces développements :
modularité ;abstraction ;encapsulation ;sûreté ;productivité et réutilisabilité.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Modularité
Division d’un logiciel en modules indépendants ;Ces modules regroupent les données et les opérationsassociées ;
Exemple : un module Maillage contenantles coordonnées des noeuds,les indices des noeuds formant les faces,une fonction pour importer un maillage à partir d’un fichier,une fonction pour retourner les limites du maillage,une fonction pour retourner le nombre de faces ou de voxels,etc
Classe : formalisme permettant de représenter le module.Objet : représentation du module, instance de la classe quiexiste dans la mémoire de l’ordinateur.La modularité permet une organisation hiérarchique ducode.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Abstraction
Abstraction :La spécification des fonctionnalités d’une classe est définie ;
Classe dite abstraiteLes fonctionnalités constitue l’interface
La représentation (l’implémentation) n’est pas définie ;l’implémentation se fait dans une classe dérivée.
Il ne peut exister une instance d’une classe abstraite.L’abstraction permet
de définir de façon générale les relations entre les classes,permet de définir une structure cohérente pour unprogramme/logiciel.
<<abstract>>Maillage
get_limites()get_nombre_de_noeuds()get_nombre_de_cellules()
<<abstract>>Donnees
get_localisation()get_valeurs()
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Encapsulation et sûreté
Encapsulation : fonctionnalité du language qui permet lamodularité ;
Une classe permet de lier des variables, ou attributs, à desfonctions, ou méthodesUn object contient les valeurs des variables, les fonctionsappelées par l’objet produisent un résultats propre à sesvaleurs.
Permet de changer librement l’implémentation.Possibilité de restreindre l’accès direct aux données ;
Des variables privées ne sont accessibles que par les méthodesde la classe.Tenter d’accéder aux variables privées produit une erreur.Permet de produire un code plus “sûr”.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Productivité et réutilisabilité
La POO favorise en principe la productivité et laréutilisabilité
Travail en équipe : la modularité simplifie l’organisation ducode et sa gestion et peut améliorer la productivité.L’abstraction et l’héritage permettent, dans une certaine mesure,la réutilisabilité du code.
<<abstract>>Donnees
get_localisation()get_valeurs()
DonneesTerrainvaleurscoordonneesget_localisation()get_valeurs()
DonneesLabovaleurpositionget_localisation()get_valeurs()
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Héritage
Chaque classe possède des caractéristiques (attributs etméthodes) qui lui sont propres.On dit d’une classe dérivée qu’elle hérite de la classe mère
la classe fille peut alors utiliser les caractéristiques de la classemère ;le code écrit pour la classe mère n’a pas à être écrit à nouveaupour la classe fille ;une classe fille peut réimplémenter une méthode de la classemère.
Propriétés de l’héritage :Transitivité : si B hérite de A et si C hérite de B alors C hérite deANon réflexif : une classe ne peut hériter d’elle-mêmeNon symétrique : si A hérite de B, B n’hérite pas de ASans cycle : il n’est pas possible que B hérite de A, C hérite de Bet que A hérite de C.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Héritage
<<abstract>>Donnees
get_localisation()get_valeurs()
DonneesTerrainvaleurscoordonneesget_localisation()get_valeurs()
DonneesLabovaleurpositionget_localisation()get_valeurs()
DonneesTraiteessequence_de_traitementget_localisation()get_valeurs()
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Polymorphisme
Avec le polymorphisme, une interface est partagée par desclasses différentes ;
e.g. : multiplication définie pour des scalaires, des matrices oudes vecteurs.
Sortes de polymorphisme :Ad hoc : interface implémentée par plusieurs fonctions de mêmenom ayant des arguments différents ;paramétré : interface implémentée par une seule fonctionprenant en arguments un type générique pour chaque entité(templates en C++) ;par sous-typage : classes filles possédant chacune sonimplémentation d’une méthode de la classe mère.
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Références
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Références générales
Fornberg, B. (1998). A Practical Guide to PseudospectralMethods, volume 1 of Cambridge Monographs on Applied andComputational Mathematics. Cambridge University PressFranek, F. (2004). Memory as a Programming Concept in C andC++. Cambridge University PressGamma, E., Helm, R., Johnson, R., and Vlissides, J. (1994).Design Patterns : Elements of Reusable Object-Oriented Software.Addison-Wesley
Motivation
Règles d’or enmodélisation
Notions utiles encalcul numérique
Discrétisation
Programmationorientée objet
Références
Références générales
Karniadakis, G. E. and Kirby, II, R. M. (2003). ParallelScientific Computing in C++ and MPI. Cambridge UniversityPressMattson, T. G., Sanders, B. A., and Massingill, B. L. (2004).Patterns for Parallel Programming. Software Patterns Series.Addison-WesleyPress, W. H., Teukolsky, S. A., Vetterling, W. T., and Flannery,B. P. (1992). Numerical Recipes in C : The Art of ScientificComputing. Cambridge University Press, 2nd edition