Introduzione a FreeFem++



Documenti analoghi
FreeFem++ mini tutorial

FREEFEM++ Marcello Bellomi. 18 Aprile Università di Verona FREEFEM++

FreeFem++ FreeFem++ Isacco Perin (University of Verona) Isacco Perin. University of Verona Master's Degree in Mathematics and Applications

ANALISI NUMERICA. Elementi finiti bidimensionali. a.a Maria Lucia Sampoli. ANALISI NUMERICA p.1/23

Elementi Finiti: stime d errore e adattività della griglia

x (x i ) (x 1, x 2, x 3 ) dx 1 + f x 2 dx 2 + f x 3 dx i x i

APPLICAZIONI LINEARI

Le equazioni. Diapositive riassemblate e rielaborate da prof. Antonio Manca da materiali offerti dalla rete.

Esempio. Approssimazione con il criterio dei minimi quadrati. Esempio. Esempio. Risultati sperimentali. Interpolazione con spline cubica.

EQUAZIONI DIFFERENZIALI. 1. Trovare tutte le soluzioni delle equazioni differenziali: (a) x = x 2 log t (d) x = e t x log x (e) y = y2 5y+6

PDE Toolbox in Matlab

E possibile modificare la lingua dei testi dell interfaccia utente, se in inglese o in italiano, dal menu [Tools

Cosa è un foglio elettronico

Metodi Stocastici per la Finanza

La modellazione delle strutture

2 Argomenti introduttivi e generali

APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI

Rendering air show e verifica della sincronizzazione

4 Dispense di Matematica per il biennio dell Istituto I.S.I.S. Gaetano Filangieri di Frattamaggiore EQUAZIONI FRATTE E SISTEMI DI EQUAZIONI

CORSO DI LAUREA INF TWM ANNO DI IMMATRICOLAZIONE MATRICOLA

Matematica e Statistica

I appello - 24 Marzo 2006

Federico Lastaria. Analisi e Geometria 2. Matrici simmetriche. Il teorema spettrale. 1/24

Consideriamo due polinomi

LE FUNZIONI A DUE VARIABILI

RICHIAMI SULLE MATRICI. Una matrice di m righe e n colonne è rappresentata come

15 febbraio Soluzione esame di geometria - 12 crediti Ingegneria gestionale - a.a COGNOME... NOME... N. MATRICOLA...

Strumenti per la Progettazione

INTRODUZIONE A EXCEL ESERCITAZIONE I

CAPITOLO 16 SUCCESSIONI E SERIE DI FUNZIONI

Pro e contro delle RNA

Equazione di Keplero (eqz. nonlineari).

RETTE, PIANI, SFERE, CIRCONFERENZE

Appunti sugli Elaboratori di Testo. Introduzione. D. Gubiani. 19 Luglio 2005

LEZIONE 23. Esempio Si consideri la matrice (si veda l Esempio ) A =

Approssimazione polinomiale di funzioni e dati

Metodi numerici per la risoluzione di equazioni. Equazioni differenziali ordinarie

Esercizi svolti. 1. Si consideri la funzione f(x) = 4 x 2. a) Verificare che la funzione F(x) = x 2 4 x2 + 2 arcsin x è una primitiva di

IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI

Corso di Matematica per la Chimica

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Integrazione numerica

Metodi Numerici per Equazioni Ellittiche

ESERCIZI DI ALGEBRA LINEARE E GEOMETRIA

Richiami sulle derivate parziali e definizione di gradiente di una funzione, sulle derivate direzionali. Regola della catena per funzioni composte.

Simulazioni di pattern di antenna con il software SRSR

Università degli Studi di Roma Tor Vergata. Corso di Laurea in Ingegneria Meccanica

Introduzione a LyX. Creazione di un documento Struttura e stile Modelli di documento Automatismi Riferimenti...

Applicazioni lineari

Indice. 1 Introduzione alle Equazioni Differenziali Esempio introduttivo Nomenclatura e Teoremi di Esistenza ed Unicità...

Esponenziali elogaritmi

Compilatore risorse display grafico LCD serie IEC-line

Universita degli Studi di Roma Tor Vergata Facolta di Ingegneria Elettronica

Tale attività non è descritta in questa dispensa

Studente: SANTORO MC. Matricola : 528

Mattia Zanella

Codifica: dal diagramma a blocchi al linguaggio C++

Equazioni alle differenze finite (cenni).

Maxima: mini guida. Presentazione del software matematico MAXIMA

Introduzione al MATLAB c Parte 2

Teoria dei Fenomeni Aleatori 1

Rappresentazione nello spazio degli stati

ELEMENTI DI ALGEBRA LINEARE E GEOMETRIA Corso di Laurea Ingegneria Edile-Architettura

Dimensione di uno Spazio vettoriale

FUNZIONI ELEMENTARI - ESERCIZI SVOLTI

Introduzione a Dev-C++

HUMMINGPRINT - La stampa digitale online dei tuoi prodotti editoriali! FOGLIO SPECIFICHE PER LA PREPARAZIONE DEL FILE PDF

Diagonalizzazione di matrici e applicazioni lineari

call europea viene esercitata, consentendo un guadagno pari a

Dispensa sulle funzioni trigonometriche

Introduzione alla teoria dei database relazionali. Come progettare un database

Sulle funzioni di W 1,p (Ω) a traccia nulla

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

Esempi di funzione. Scheda Tre

LA GESTIONE DELLE VISITE CLIENTI VIA WEB

per immagini guida avanzata Organizzazione e controllo dei dati Geometra Luigi Amato Guida Avanzata per immagini excel

La funzione di trasferimento

1. PRIME PROPRIETÀ 2

Interpolazione ed approssimazione di funzioni

Basi di matematica per il corso di micro

MOBILE WEB DESIGN TUTORIAL ANDROID METAIO AUGMENTED REALITY

LE FIBRE DI UNA APPLICAZIONE LINEARE

Intorni Fissato un punto sull' asse reale, si definisce intorno del punto, un intervallo aperto contenente e tutto contenuto in

Linguaggi di programmazione

NVU Manuale d uso. Cimini Simonelli Testa

ESERCIZI APPLICAZIONI LINEARI

Analisi Complessa. Prova intermedia del 7 novembre Soluzioni. (z 11 1) 11 1 = 0.

Parte 2. Determinante e matrice inversa

Il web server Apache Lezione n. 3. Introduzione

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Teoria in sintesi 10. Attività di sportello 1, 24 - Attività di sportello 2, 24 - Verifica conclusiva, 25. Teoria in sintesi 26

FUNZIONE. Si scrive: A B f: A B x y=f(x) (si legge: f funzione da A in B) x f y= f(x)

OSSIF WEB. Manuale query builder

Luigi Piroddi

Se x* e punto di minimo (locale) per la funzione nell insieme Ω, Ω = { x / g i (x) 0 i I, h j (x)= 0 j J } lo e anche per F(x) = f o (x) + c x x 2

PROGRAMMA SVOLTO NELLA SESSIONE N.

PULSANTI E PAGINE Sommario PULSANTI E PAGINE...1

Salvare e importare dati

PROBLEMI TRADIZIONALI SIMULAZIONE DELLA PROVA DI MATEMATICA

NOME:... MATRICOLA:... Scienza dei Media e della Comunicazione, A.A. 2007/2008 Analisi Matematica 1, Esame scritto del x 1.

Transcript:

Introduzione a FreeFem++ Manolo Venturin EnginSoft, Padova 14 maggio 2012 M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 1 / 35

Indice della presentazione Indice 1 Introduzione Caratteristiche 2 Esempio: Laplace Problema Formulazione variazionale Approssimazione numerica 3 Esempio: Poisson Problema Formulazione variazionale 4 Un ulteriore esempio Esempio 5 Conclusione M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 2 / 35

Introduzione Caratteristiche FreeFem++ Risolve problemi 2D e 3D; Formulazione variazionale dei problemi; Free software (Linux, Windows e Mac) 1 Facile da installare; Sviluppato da: Olivier Pironneau, Frédéric Hecht, Antoine Le Hyaric, Jacques Morice; Scritto in C++ e con una grammatica simile; 1 FreeFem++ web site M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 3 / 35

Introduzione Caratteristiche FreeFem++ Include: Generazione/caricamento di mesh; Molti tipi di elementi finiti disponibili; Molti solutori lineari inclusi e librerie incluse: CG, GMRES, UMFPACK, SUPERLU, MUMPS; Matrici in formato sparso; Strumento per visualizzare i risultati. Elimina complicati overhead di programmazione (geometria, mesh, assemblaggio, interpolazione, formule di quadratura) concentrandosi maggiormente sul problema invece che sulla sua implementazione; I problemi possono essere scritti direttamente nella loro formulazione variazionale; Ben documentato e con molti esempi; Facile per provare nuove idee senza scrivere centinaia di righe di codice. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 4 / 35

Il problema Esempio: Laplace Problema Dato f L 2 (Ω), trovare ϕ H0 1 (Ω) tale che ϕ = f in Ω ϕ(x, y) = 0 su Γ 1 n ϕ = ϕ n = 0 su Γ 2 M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 5 / 35

Esempio: Laplace Formulazione variazionale Formulazione variazionale La fomulazione debole o variazionale è ottenuta moltiplicando l equazione per la generica funzione test w V H 1 Γ 1 = {w H 1 (Ω) : w Γ1 = 0} e integrando per parti il termine Laplaciano si ottiene ϕ w dω = fw dω Ω Ω M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 6 / 35

Esempio: Laplace Formulazione variazionale Formulazione variazionale Equivalentemente il problema può essere rifomulato come: trovare ϕ V tala che a(ϕ, w) = l(w) v V dove la forma bilineare è a(ϕ, w) = e quella lineare Ω l(w) = ϕ w dω Ω fw dω È facile provare che la forma bilineare è continua e coerciva (oltre che simmetrica) in V e di conseguenza la soluzione esiste ed è unica. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 7 / 35

Esempio: Laplace Approssimazione numerica Approssimazione numerica Indicato con V h il sottospazio degli elementi finiti lineari di V, la fomulazione di Galerkin è: trovare ϕ h V h tale che a(ϕ h, w h ) = l(w h ) v h V h V h V con dimv h = n h è definito come { } n h V h = ϕ(x, y) : ϕ(x, y) = ϕ k φ k (x, y), ϕ k R k=1 dove φ k P s è un polinomio di grado s. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 8 / 35

Esempio: Laplace Approssimazione numerica Approssimazione numerica Lo spazio V h = V h (Ω h, P) dipende dalla mesh: Ω h = n e e=1 T e e dall approssimazione P P 0 approssimazione constante a tratti; P 1 approssimazione lineare a tratti;... M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 9 / 35

Esempio: Laplace Approssimazione numerica Approssimazione numerica Quindi il problema diventa: trovare ϕ h V h tale che a(ϕ h, w h ) = l(w h ) v h V h che equivale a risolvere il seguente sistema lineare a(φ j, φ i ) = l(φ i ) i = {1,..., n h }. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 10 / 35

Esempio: Laplace Per risolvere numericamente l equazione di Laplace, bisogna eseguire i seguenti passi: 1 Dichiarazione dei alcuni parametri globali; 2 Descrizione della geometria; 3 Calcolo della mesh del problema; 4 Scrittura della formulazione variazione; 5 Visualizzazione dei risultati. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 11 / 35

Parametri globali Esempio: Laplace // // FILE : L a p l a c e. e d p // DESCRIPTION : Laplace equation over an e l l i p s e // AUTHOR : M. V e n t u r i n // // Problem p r e f i x // s t r i n g s a v e d i r = r e s u l t s l a p l a c e / ; // Save d i r e c t o r y s t r i n g p r o b l e m P r e f i x = l a p l a c e ; // Problem p r e f i x used i n output f i l e s Sono state create due variabili di tipo string utilizzate successivamente per il salvataggio delle immagini. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 12 / 35

Geometria Esempio: Laplace // D e f i n i n g t h e boundary as an egg shape r e a l e g g h e i g h t = 1 ; r e a l a = e g g h e i g h t / 2 ; b o r d e r Gamma1( t =0, p i ){ x=0. 7 8 a cos ( t /4) s i n ( t ) ; y= a ( cos ( t ) 1);} b o r d e r Gamma2( t =0, p i ){ x= 0. 7 8 a cos ( t /4) s i n ( t ) ; y= a ( cos ( t ) 1);} // Geometry i n t n b d i v = 1 0 1 ; // Number o f s u b d i v i s i o n s f u n c geom = Gamma1( n b d i v ) + Gamma2( n b d i v ) ; p l o t ( geom, w a i t=t r u e, bw=1, ps=s a v e d i r + p r o b l e m P r e f i x + geom.eps ) ; Il bordo viene definito in modo parametrico attraverso il comando border. È possibile definire particolare domini con buchi oppure no a seconda della orientazione del bordo (si veda la documentazione ufficiale). M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 13 / 35

Geometria Esempio: Laplace M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 14 / 35

Mesh Esempio: Laplace // Mesh mesh Th = buildmesh ( geom ) ; p l o t (Th, w a i t=t r u e, bw=1, ps=s a v e d i r + p r o b l e m P r e f i x + m e s h. e p s ) ; La mesh viene calcolata utilizzando il comando buildmesh. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 15 / 35

Mesh Esempio: Laplace M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 16 / 35

Formulazione variazione Esempio: Laplace // The f i n i t e element space using P1 elements f e s p a c e Vh(Th, P1 ) ; // Force term f u n c f = 1. 0 ; // D e f i n e s u and v as p i e c e w i s e P1 c o n t i n u o u s f u n c t i o n Vh phi, w ; // L a p l a c e VF problem L a p l a c e ( phi, w, s o l v e r=umfpack) = i n t 2 d (Th ) ( dx ( p h i ) dx (w)+dy ( p h i ) dy (w) ) i n t 2 d (Th ) ( f w) + on (Gamma1, p h i =0); // D i r i c h l e t bc È possibile definire funzioni, spazi funzionale e problemi nella formulazione variazionale. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 17 / 35

Esempio: Laplace Risoluzione e visualizzazione dei risultati // S o l v e t h e PDE Laplace ; // P l o t s o l u t i o n p l o t ( phi, w a i t =1, ps=s a v e d i r + p r o b l e m P r e f i x + s o l. e p s ) ; Richiamo il problema da risolvere e poi visualizzo i risultati. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 18 / 35

Esempio: Laplace Risoluzione e visualizzazione dei risultati M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 19 / 35

Il problema Esempio: Poisson Problema Risolvere il seguente problema di Poisson u = f in Ω u(x, y) = e x+y su Γ D n u(x, y) = u n su Γ N dove la soluzione esatta del problema sia u(x, y) = e x+y ; Ω è il quadrato unitario Ω = (0, 1) (0, 1); Γ N è il bordo formato dal lato sinistro e destro del quadrato; M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 20 / 35

Esempio: Poisson Formulazione variazionale Formulazione variazionale La forma debole associata al seguente problema generale ( k φ ) = f in Ω x i x i φ = φ d k φ n i = φ n x i su Γ D su Γ N è Ω v k φ dω vφ N dγ vf dω = 0. x i x i Γ N Ω M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 21 / 35

Esempio: Poisson // P o i s s o n e q u a t i o n o v e r t h e u n i t s q u a r e w i t h Neumann b. c., M. V e n t u r i n // I n c l u d e macro and d e f i n e problem p r e f i x i n c l u d e e r r o r L 2. e d p // Macro f o r L2 e r r o r i n c l u d e e r r o r H 1. e d p // Macro f o r H1 e r r o r s t r i n g s a v e d i r = r e s u l t s p o i s s o n / ; // Save d i r e c t o r y s t r i n g p r o b l e m P r e f i x = p o i s s o n ; // Problem p r e f i x used i n o u t p u t f i l e s // Exact s o l u t i o n and i t s d e r i v a t i v e s f u n c ue = exp ( x+y ) ; // Exact s o l u t i o n f u n c dxue = exp ( x+y ) ; // D e r i v a t i v e w. r. t. x f u n c dyue = exp ( x+y ) ; // D e r i v a t i v e w. r. t. y // PDE Parameters f o r the Poisson equation f u n c k = 1. 0 ; // D i f f u s i o n term func f = 2. 0 exp ( x+y ) ; // Force term f u n c gd = exp ( x+y ) ; // D i r i c h l e t boundary c o n d i t i o n f u n c un2 = exp ( x+y ) ; // D e r i v a t i v e r i g h t domain f u n c un4 = exp ( x+y ) ; // D i r i c h l e t l e f t domain // Problem p a r a m e t e r s and e r r o r v a r i a b l e s i n t n d i v = 1 6 ; // Number o f i n i t i a l s u b d i v i s i o n s i n t i = 0 ; // Loop v a r i a b l e i n t m a x i t e r = 5 ; // Number o f maximum s u b d i v i s i o n s r e a l [ i n t ] errnt ( m a x i t e r ) ; // Number o f e l e m e n t s r e a l [ i n t ] e r r L 2 ( m a x i t e r ) ; // E r r o r i n L2 norm r e a l [ i n t ] errh1 ( m a x i t e r ) ; // E r r o r i n H1 norm r e a l [ i n t ] maxh ( m a x i t e r ) ; // Max e l e m e n t s i z e r e a l [ i n t ] cputime ( m a x i t e r ) ; // CPU time i n f o r m a t i o n f o r each i t e r a t i o n M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 22 / 35

Esempio: Poisson // Main problem o v e r mesh r e f i n e m e n t f o r ( i =0; i<m a x i t e r ; i ++){ cout << P e r f o r m i n i t e r a t i o n # << i +1 << e n d l ; mesh Th = s q u a r e ( ndiv, n d i v ) ; // Uniform mesh o v e r t h e u n i t s q u a r e [ 0, 1 ] x [ 0, 1 ] p l o t (Th, w a i t =1, ps=s a v e d i r + p r o b l e m P r e f i x + mesh + i +. e p s ) ; fespace Vh(Th, P1 ) ; // Piecewise P1 continuous function f o r u and v Vh u, v ; // Poisson equation : d/ dxi ( k dphi / dxi ) = f problem P o i s s o n ( u, v, s o l v e r=umfpack) = i n t 2 d (Th ) ( dx ( v ) k dx ( u)+dy ( v ) k dy ( u ) ) i n t 2 d (Th ) ( v f ) // D i f f u s i o n and s o u r c e i n t 1 d (Th, 4 ) ( v un4 ) i n t 1 d (Th, 2 ) ( v un2 ) // D i f f u s i o n l i n e i n t e g r a l s + on ( 1, 3, u=gd ) ; // D i r i c h l e t bc // Solve the PDE saving i t s computational time cputime [ i ] = c l o c k ( ) ; P o i s s o n ; cputime [ i ] = c l o c k () cputime [ i ] ; p l o t ( u, w a i t =1, ps=s a v e d i r + p r o b l e m P r e f i x + s o l + i +. e p s ) ; // S a v i n g s o l u t i o n data f o r o u t put errnt [ i ] = Th.nt ; // Number o f t r i a n g l e s e r r o r L 2 (Th, u, ue, e r r L 2 [ i ] ) ; // Compute e r r o r L2 e r r o r H 1 (Th, u, ue, dxue, dyue, errh1 [ i ] ) ; // Compute e r r o r H1 f e s p a c e Ph (Th, P0 ) ; Ph h = h T r i a n g l e ; maxh [ i ] = h [ ].max ; // Element s i z e } n d i v = n d i v 2; // Set t h e number o f s u b d i v i s i o n s cout << e n d l << e n d l << e n d l ; // End l i n e s M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 23 / 35

Esempio: Poisson // Save data to an e x t e r n a l f i l e { o f s t r e a m o u t f i l e ( s a v e d i r + p r o b l e m P r e f i x + r e s u l t. d a t ) ; f o r ( i =0; i<m a x i t e r ; i ++){ o u t f i l e << i +1 << << errnt [ i ] << << maxh [ i ] ; o u t f i l e << << e r r L 2 [ i ] << << errh1 [ i ] ; o u t f i l e << << cputime [ i ] << e n d l ; } } M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 24 / 35

Esempio: Poisson // // FILE : e r r o r L 2. e d p // DESCRIPTION : E r r o r i n t h e L2 norm // AUTHOR : M. V e n t u r i n // // Th ( i n p u t ) : Mesh // u ( i n p u t ) : Approximated s o l u t i o n // ue ( i n p u t ) : Exact s o l u t i o n // e r r ( o u t p u t ) : E r r o r macro e r r o r L 2 (Th, u, ue, e r r ) ( e r r = s q r t ( i n t 2 d (Th ) ( ( u ue ) ˆ 2 ) ) ) // end macro L errore in norma L 2 è definito come e 2 L = u 2 h u 2 dω dove u e u h sono rispettivamente la soluzione di riferimento e quella approssimata. Ω M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 25 / 35

Esempio: Poisson // // FILE : e r r o r H 1. e d p // DESCRIPTION : E r r o r i n t h e H1 norm // AUTHOR : M. V e n t u r i n // // Th ( i n p u t ) : Mesh // u ( i n p u t ) : Approximated s o l u t i o n // ue ( i n p u t ) : Exact s o l u t i o n // dxue ( i n p u t ) : D e r i v a t i v e o f t h e e x a c t s o l u t i o n a l o n g x // dyue ( i n p u t ) : D e r i v a t i v e o f t h e e x a c t s o l u t i o n a l o n g y // e r r ( o u t p u t ) : E r r o r macro e r r o r H 1 (Th, u, ue, dxue, dyue, e r r ) ( e r r = s q r t ( i n t 2 d (Th ) ( ( u ue ) ˆ 2 ) + i n t 2 d (Th ) ( ( dx ( u) dxue )ˆ2)+ i n t 2 d (Th ) ( ( dy ( u) dyue ) ˆ 2 ) ) ) // end macro L errore in norma H 1 è definito come e 2 H = u 1 h u 2 dω + Ω Ω u h u x i x i dove u e u h sono rispettivamente la soluzione di riferimento e quella approssimata. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 26 / 35 2 dω

Analisi dei risultati Esempio: Poisson M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 27 / 35

Analisi dei risultati Esempio: Poisson Il risultato rispecchia quanto attesso dalla teoria nel caso di elementi finiti lineari. Dato u la soluzione di riferimento e u h la sua approssimazione di ordine k, si ha u u h H 1 (Ω) Ch s u H s+1 (Ω) u u h L 2 (Ω) Ch s+1 u H s+1 (Ω) con s = min{k, p} dove u H p+1. M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 28 / 35

Un ulteriore esempio Parametri globali e geometria Esempio // // FILE : e x g e o. e d p // DESCRIPTION : Example o f geometry // AUTHOR : M. V e n t u r i n // // Problem p r e f i x // s t r i n g s a v e d i r = r e s u l t s e x g e o / ; // Save d i r e c t o r y s t r i n g p r o b l e m P r e f i x = e x g e o ; // Problem p r e f i x used i n o u t p u t f i l e s // D e f i n i n g t h e boundary as an egg shape r e a l e g g h e i g h t = 1 ; r e a l a = e g g h e i g h t / 2 ; b o r d e r Gamma1( t =0, p i ){ x=0. 7 8 a cos ( t /4) s i n ( t ) ; y= a ( cos ( t ) 1); l a b e l =1;} b o r d e r Gamma2( t =0, p i ){ x= 0. 7 8 a cos ( t /4) s i n ( t ) ; y= a ( cos ( t ) 1); l a b e l =2;} r e a l c = e g g h e i g h t /2. 5 ; r e a l r = e g g h e i g h t / 5 ; b o r d e r I n s i d e ( t =0,2 p i ){ x=r cos ( t ) ; y=c+r s i n ( t ) ; l a b e l =3;} // Geometry i n t n b d i v 1 = 1 0 1 ; // Number o f s u b d i v i s i o n s ( e x t e r n a l ) i n t n b d i v 2 = 3 1 ; // Number o f s u b d i v i s i o n s ( i n t e r n a l ) f u n c geom = Gamma1( n b d i v 1 ) + Gamma2( n b d i v 1 ) + I n s i d e ( n b d i v 2 ) ; // w i t h i n s i d e // f u n c geom = Gamma1( n b d i v 1 ) + Gamma2( n b d i v 1 ) + I n s i d e ( n b d i v 2 ) ; // w i t h o u t i n s i d e p l o t ( geom, w a i t=t r u e, bw=1, ps=s a v e d i r + p r o b l e m P r e f i x + geom.eps ) ; M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 29 / 35

Geometria Un ulteriore esempio Esempio M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 30 / 35

Un ulteriore esempio Mesh e dati del problema Esempio // Mesh mesh Th = buildmesh ( geom ) ; p l o t (Th, w a i t=t r u e, bw=1, ps=s a v e d i r + p r o b l e m P r e f i x + m e s h. e p s ) ; // Saving mesh ( Borders name are l o s t only r e f s are kept ) // savemesh (Th, s a v e d i r + p r o b l e m P r e f i x + meshdata.msh ) ; i n t r e g e x t = Th ( 0, 0. 0 0 1 ). r e g i o n ; i n t r e g i n t = Th ( 0, c ). r e g i o n ; // The f i n i t e element space using P1 elements f e s p a c e Vh(Th, P1 ) ; // Force term f u n c f = 0. 1 ; f u n c k = 0. +. 5 ( r e g i o n==r e g e x t ) + 0. 1 ( r e g i o n==r e g i n t ) ; // D e f i n e s u and v as p i e c e w i s e P1 c o n t i n u o u s f u n c t i o n Vh phi, w ; M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 31 / 35

Mesh Un ulteriore esempio Esempio M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 32 / 35

Soluzione Un ulteriore esempio Esempio // L a p l a c e VF problem L a p l a c e ( phi, w, s o l v e r=umfpack) = i n t 2 d (Th ) ( dx ( p h i ) k dx (w)+dy ( p h i ) k dy (w) ) i n t 2 d (Th ) ( f w) + on (Gamma1, p h i =30); // D i r i c h l e t bc // S o l v e t h e PDE Laplace ; // P l o t s o l u t i o n p l o t ( phi, w a i t =1, ps=s a v e d i r + p r o b l e m P r e f i x + s o l. e p s ) ; M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 33 / 35

Un ulteriore esempio Visualizzazione dei risultati Esempio M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 34 / 35

Conclusione Conclusione Grazie per l attenzione M. Venturin (EnginSoft) Introduzione a FreeFem++ 14 maggio 2012 35 / 35