quelques fonctionnalit es de freefem++ pour la cr eation ...+days/2009/presentation... · 14-15...

Post on 13-Mar-2019

215 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

14-15 Septembre Journees FreeFem++

Quelques fonctionnalites de Freefem++

pour la creation de maillages 3D

Application au filet de peche

C. Ody - R. LewandowskiInstitut de recherche mathematique de Rennes

(IRMaR)

September 15, 2009

1

14-15 Septembre Journees FreeFem++

Cadre de l’etude : La surpeche (Framework : Overfishing)

Figure: Extraits d’un rapport de 2004.

2

14-15 Septembre Journees FreeFem++

Lutte contre la surpeche (Limiting overfishing)

1. Peche raisonnee et durable

2. Politique des quotas

3. Amelioration des techniques de peche et de la selectivite des filets

3

14-15 Septembre Journees FreeFem++

Amelioration de la selectivite des filets(Improving net selectivity)

1. Campagnes en mer

2. Experiences sur modeles reduits

Figure: Maquette IFREMER.

3. Simulations numeriques

4

14-15 Septembre Journees FreeFem++

Cahier des charges de la simulation numerique(Numerical simulation of flow through nets)

Prise en compte de

1. l’ecoulement (turbulent) autour et au travers du filet

2. le mouvement et la deformation du filet

3. le deplacement et la prise des poissons

→ Interaction complexe entre ces trois aspects

5

14-15 Septembre Journees FreeFem++

Cahier des charges de la simulation numerique(Numerical simulation of flow through nets)

Prise en compte de

1. l’ecoulement (turbulent) autour et au travers du filet

2. le mouvement et la deformation du filet

3. le deplacement et la prise des poissons

→ Interaction complexe entre ces trois aspects

Premiere etape : simuler l’ecoulement

1. prendre en compte le filet et les poissons

2. proposer une methode qui permette la prise en compte future del’interaction ecoulement-filet

3. simuler l’ecoulement en 3D

6

14-15 Septembre Journees FreeFem++

Methode proposee (These de G. Pichot)Observations experimentales realisees a l’IFREMER:

Figure: Filet et profil superieur correspondant.

7

14-15 Septembre Journees FreeFem++

Methode proposee (These de G. Pichot)

Modelisation du filet et des poissons par une membrane poreuse

Figure: Le filet vu comme une membrane poreuse composee de 5 sous-domaines

→ Terme de penalisation ajoute dans les equations de Navier-Stokesu

K(x,t) → Introduction d’une permeabilite K (x, t) qui varie selon lesous-domaine

8

14-15 Septembre Journees FreeFem++

Debut du travail en 3D a l’aide de FreeFEM++

Structure du code:

// Main//=====

// load ”msh3” , l oad ” t e t g en ” , l o ad ”medit ”i n c l u d e ” i n c l u d e s a n d p a r ame t e r s . edp” ;

// C r e a t i o n du f i l e t 3Di n c l u d e ” net mesh . edp” ;

// C r e a t i o n d ’ un ma i l l a g e non conformei n c l u d e ” s imple 3D mesh . edp” ;

// Espaces f o n c t i o n n e l s e t v a r i a b l e si n c l u d e ” f e f u n c t i o n s . edp” ;

// P r o j e c t i o n de l a p e rm e a b i l i t e s u r l e ma i l l a g e non conformei n c l u d e ” p e rme a b i l i t y p r o j e c t i o n o n n o n c o n f o rma l m e s h . edp” ;

// Resout Nav i e r S t o k e s s u r ma i l l a g e non conformei n c l u d e ” s o l v e N a v i e r S t o k e s . edp” ;

9

14-15 Septembre Journees FreeFem++

Creation d’un filet avec differents sous-domaines

Figure: Le filet 3d et les 5 sous-domaines

→ 5 sous-domaines de revolution obtenus a partir du filet 2d → Maillagevolumique obtenu apres l’addition des 5 maillages surfaciques

correspondants

10

14-15 Septembre Journees FreeFem++

// Fonc t i on pour l a c r e a t i o n d ’ un ma i l l a g e s u r f a c i q u e de r e v o l u t i o n a p a r t i r d ’ un p r o f i l 2Df unc mesh3 Re v o l u t i o nSu r f a c e ( i n t numf i l e , i n t [ i n t ] & pos , i n t o r i e n t , i n t n the ta ){. . .}

// Maini n t o r i e n t a t i o n =1;i n t n the ta =50;

// Su r f a c e de r e v o l u t i o n 1i n t [ i n t ] p o i n t s 1 = [0 , 2 , 3 , 5 ] ;mesh3 Su r f a c e1=Revo l u t i o nSu r f a c e (1 , po i n t s1 , o r i e n t a t i o n , n the ta ) ;

// Su r f a c e de r e v o l u t i o n 1i n t [ i n t ] p o i n t s 2 = [0 , 3 , 4 , 1 1 ] ;mesh3 Su r f a c e2=Revo l u t i o nSu r f a c e (2 , po i n t s2 , o r i e n t a t i o n , n the ta ) ;

. . . .

// Add i t i o n des m a i l l e s s u r f a c i q u e s pour o b t e n i r avant l e ma i l l a g e vo lumiquemesh3 F i l e t S u r f a c e=Su r f a c e1+Su r f a c e2 +.. .+ Su r f a c e5 ;

Figure: Le filet 3d compose de 5 sous-domaines

11

14-15 Septembre Journees FreeFem++

On part d’un fichier de points .txt qui correspondent au profil 2D dechaque sous-domaine.

7 // −−> Nombre de l i g n e s du f i c h i e r596 53 .16770 110 .98770 203 .35747 195 .5696 176647 154596 130 .5

Au debut de la fonction, on importe ces points dans deux tableaux, unpour les abscisses, un pour les ordonnees:

f unc mesh3 Re v o l u t i o nSu r f a c e ( i n t numf i l e , i n t [ i n t ] & pos , i n t o r i e n t , i n t n the ta ){

// Ouve r tu re du f i c h i e r ” geometry4 . t x t ”i f s t r e am f i l e ( ” geometry ”+numf i l e+” . t x t ” ) ;

// Lec tu r e du nombre de l i g n e si n t nn=0;f i l e >> nn ;

// De c l a r a t i o n des t a b l e a u x pour l e s a b s c i s s e s e t l e s ordonn \ ’ e e sr e a l [ i n t ] Netx ( nn ) , Nety ( nn ) ; // abs e t ord des noeuds

// Lec tu r e du f i c h i e rf o r ( i n t i =0; i<nn ; i++) f i l e >> Netx [ i ] >> Nety [ i ] ;

12

14-15 Septembre Journees FreeFem++

Ensuite, on cree des fonctions (a l’interieur de la fonction principale)pour realiser une interpolation lineaire de la position des points situesentre deux points consecutifs du tableau

// I n t e r p o l a t i o n pour Xf unc r e a l Xnet ( r e a l t ){

i n t i=min ( i n t ( t ) , Netx . n−2);r e a l t1=t−i , t0=1−t1 ;r e t u r n Netx [ i ]∗ t0 + Netx [ i +1]∗ t1 ;}

// I n t e r p o l a t i o n pour Yf unc r e a l Ynet ( r e a l t ){

i n t i=min ( i n t ( t ) , Netx . n−2);r e a l t1=t−i , t0=1−t1 ;r e t u r n Nety [ i ]∗ t0 + Nety [ i +1]∗ t1 ;}

On definit donc notamment les border a partir de ces fonctions

// C r e a t i o n des f r o n t i e r e s du domaineborder bo tbo rde r ( t =0, p o i n t s [ 1 ] ) { x = Xnet ( t ) ; y = Ynet ( t ) ; } // Bottom bo rde rborder r i g h t b o r d e r ( t =0 ,1) { x = XnetR ; y = YnetR ( t ) ; } // R ight bo rde rborder t opbo rde r ( t=po i n t s [ 2 ] , p o i n t s [ 3 ] ) { x = Xnet ( t ) ; y = Ynet ( t ) ; } // Top bo rde rborder l e f t b o r d e r ( t =0 ,1) { x = XnetL ; y = YnetL ( t ) ; } // L e f t Border

// Trace co r r e s pondan ti n t nh=20; i n t nv=20;p l o t ( bo tbo rd e r ( nh)+ r i g h t b o r d e r ( nv)+ topbo rde r ( nh)+ l e f t b o r d e r ( nv ) , wa i t =1);

13

14-15 Septembre Journees FreeFem++

Figure: Trace des frontieres

On maille (notez l’option fixeborder pour garder les points du tableau):

mesh Th=bui ldmesh ( bo tbo rd e r ( nh)+ r i g h t b o r d e r ( nv)+ topbo rde r ( nh)+ l e f t b o r d e r ( nv ) ,f i x e b o r d e r =1);

Figure: Maillage 2d

14

14-15 Septembre Journees FreeFem++

Maintenant, on va creer un maillage surfacique 3D a partir de cemaillage. On fera ensuite une transformation pour obtenir la surface derevolution. Les etapes sont donc les suivantes:

Figure: Du 2d au 3d

15

14-15 Septembre Journees FreeFem++

On obtient tout d’abord les faces avant et arriere en utilisant la fonctionmovemesh23

// T r a n s l a t i o n o f Th to ge t f r o n t ( at z=2p i ) and r e a r ( at z=0) f a c e s o f s u r f a c e meshi n t [ i n t ] r r e a r =[0 ,1 ] , r f r o n t = [ 0 , 2 ] ;mesh3 Threar = movemesh23 (Th , t r a n s f o =[x , y , 0 . ] , r e f f a c e=r r e a r , o r i e n t a t i o n=−o r i e n t ) ;mesh3 Thf ront = movemesh23 (Th , t r a n s f o =[x , y , 2 .∗ p i ] , r e f f a c e=r f r o n t , o r i e n t a t i o n=o r i e n t ) ;

De facon similaire, on obtiendra les faces laterales, et celles du dessus etdu dessous et on les additionne pour obtenir la surface intermediaire

// Add i t i o n des s u r f a c e s obtenuesmesh3 Su r f aceLongueu r2P i=Threar+Thf ront+Thtop+Thbot+Th l e f t+Thr i gh t ;

Figure: 3d mesh of length 2π

16

14-15 Septembre Journees FreeFem++

Pour obtenir finalement la surface de revolution, on utilise la fonctionmovemesh3 avec l’option facemerge pour fusionner les faces qui vontvenir se coller.

// Trans fo rmat i on de l a s u r f a c e pour f a i r e l a r e v o l u t i o nmesh3 S u r f a c e F i n a l e=movemesh3 ( Sur faceLongueur2P i , t r a n s f o =[x , y∗cos ( z ) , y∗ s i n ( z ) ] , f acemerge =2);

// Fonc t i on pour l a c r e a t i o n d ’ un ma i l l a g e s u r f a c i q u e de r e v o l u t i o n a p a r t i r d ’ un p r o f i l 2Df unc mesh3 Re v o l u t i o nSu r f a c e ( i n t numf i l e , i n t [ i n t ] & pos , i n t o r i e n t , i n t n the ta ){. . .

// Retourne l e ma i l l a g e s u r f a c i q u e 3dr e t u r n S u r f a c e F i n a l e ;}

// Maini n t o r i e n t a t i o n =1;i n t n the ta =50;

// Su r f a c e de r e v o l u t i o n 1i n t [ i n t ] p o i n t s 1 = [0 , 2 , 3 , 5 ] ;mesh3 Su r f a c e1=Revo l u t i o nSu r f a c e (1 , po i n t s1 , o r i e n t a t i o n , n the ta ) ;

. . . .

// Add i t i o n des m a i l l e s s u r f a c i q u e s pour o b t e n i r avant l e ma i l l a g e vo lumiquemesh3 F i l e t S u r f a c e=Su r f a c e1+Su r f a c e2 +.. .+ Su r f a c e5 ;

17

14-15 Septembre Journees FreeFem++

Maintenant, il reste a mailler la surface obtenue. On utilise tetgen selon

r e a l [ i n t ] p o i n t s i n t e r i e u r s = [ 65 , 0 , 3 0 , 1 7 , 1 00 , 1 90 , 0 , 3 8 , 1 9 , 1 00 , 5 90 , 0 . , 5 4 . , 1 8 , 1 00 , 5 97 . , 0 . , 5 4 . , 2 0 , 1 00 , 1 000 , 0 , 0 , 2 1 , 1 00 ] ; //mesh3 F i l e tVo lume= t e t g ( F i l e t S u r f a c e , sw i t ch=”paAQ” , n b o f r e g i o n s =5, r e g i o n l i s t=p o i n t s i n t e r i e u r s ) ;

On peut definir la permeabilite sur le filet

f e space Vh conforme ( F i l e tVo lume , P0 ) ;Vh conforme k ;k conforme=0∗( r eg i on==17)+10∗( r eg i on==18)+0∗( r eg i on==19)+20∗( r eg i on==20)+25∗( r eg i on ==21);

Figure: Le filet 3d compose de 5 sous-domaines

18

14-15 Septembre Journees FreeFem++

On va projeter sur un maillage non conforme. On cree ce maillage enprenant la fonction SurfaceHex.edp et tetgen de mesh surface.idp.On pourrait egalement utiliser la fonction buildlayer.

mesh3 PaveSu r f a c i que = Sur faceHex (N,B , L , 1 ) ;mesh3 PaveVolumique = t e t g ( PaveSur fac ique , sw i t c h=”pqaAQ” , n b o f r e g i o n s =1, r e g i o n l i s t=domaine ) ;

Figure: Maillage non conforme19

14-15 Septembre Journees FreeFem++

f e space Vh non conforme ( PaveVolumique , P0 ) ;Vh non conforme k non confo rme ;k non confo rme=k conforme ; // I n t e r p o l a t i o n / P r o j e c t i o n between the 2 meshes

Figure: Permeabilite sur maillage non conforme20

top related