modélisationetinversion engéophysique 1-modélisation ... · version1.2.3 hiver2019. motivation...

65
Motivation Règles d’or en modélisation Notions utiles en calcul numérique Discrétisation Programmation orientée objet Références Modélisation et inversion en géophysique 1 - Modélisation : Introduction Bernard Giroux ([email protected]) Institut national de la recherche scientifique Centre Eau Terre Environnement Version 1.2.3 Hiver 2019

Upload: others

Post on 14-Jun-2021

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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([email protected])

Institut national de la recherche scientifiqueCentre Eau Terre Environnement

Version 1.2.3Hiver 2019

Page 2: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

Motivation

Règles d’or enmodélisation

Notions utiles encalcul numérique

Discrétisation

Programmationorientée objet

Références

Motivation

Page 3: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 4: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 5: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 6: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 7: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 8: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 9: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 10: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 11: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 12: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 13: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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?

Page 14: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 15: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 16: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 17: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 18: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 19: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 20: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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...

Page 21: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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).

Page 22: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 23: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 24: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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é.

Page 25: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 26: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 27: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 28: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

Motivation

Règles d’or enmodélisation

Notions utiles encalcul numérique

Discrétisation

Programmationorientée objet

Références

Discrétisation

Page 29: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 30: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 31: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 32: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 33: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 34: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 35: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 36: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 37: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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)

Page 38: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 39: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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)

Page 40: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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)

Page 41: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 42: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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?

Page 43: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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)

Page 44: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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).

Page 45: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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).

Page 46: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 47: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 48: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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)

Page 49: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 50: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 51: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 52: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 53: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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}

Page 54: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

Motivation

Règles d’or enmodélisation

Notions utiles encalcul numérique

Discrétisation

Programmationorientée objet

Références

Programmation orientée objet

Page 55: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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é.

Page 56: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 57: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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()

Page 58: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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”.

Page 59: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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()

Page 60: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 61: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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()

Page 62: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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.

Page 63: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

Motivation

Règles d’or enmodélisation

Notions utiles encalcul numérique

Discrétisation

Programmationorientée objet

Références

Références

Page 64: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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

Page 65: Modélisationetinversion engéophysique 1-Modélisation ... · Version1.2.3 Hiver2019. Motivation Règlesd’oren modélisation Notionsutilesen calculnumérique Discrétisation Programmation

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