Вы находитесь на странице: 1из 398
Third Edition, Version 3.32 http://www.freefem.org/ff++ F. Hecht Laboratoire Jacques-Louis Lions, Universit´e Pierre et

Third Edition, Version 3.32

F. Hecht

Edition, Version 3.32 http://www.freefem.org/ff++ F. Hecht Laboratoire Jacques-Louis Lions, Universit´e Pierre et

Laboratoire Jacques-Louis Lions, Universit´e Pierre et Marie Curie, Paris

FreeFem++

Third Edition, Version 3.32

http://www.freefem.org/ff++ Fr´ed´eric Hecht 1 2

In collaboration with:

Sylvian Auliac, mailto:auliac@ann.jussieu.fr, http://www.ann.jussieu. fr/auliac is PHD student , he do all the new optimization interface with nlopt, ipopt, cmaes,

Olivier Pironneau, mailto:olivier.pironneau@upmc.fr, http://www. ann.jussieu.fr/pironneau Olivier Pironneau is a professor of numerical analysis at the university of Paris VI and at LJLL. His scientific contributions are in numerical methods for fluids. He is a member of the Institut Universitaire de France and of the French Academy of Sciences

Jacques Morice, mailto:morice@ann.jussieu.fr. Jacaues Morice is a Post- Doct at LJLL. His doing is Thesis in University of Bordeaux I on fast multipole method (FMM). In this version, he do all three dimensions mesh generation and coupling with medit software.

Antoine Le Hyaric, mailto:lehyaric@ann.jussieu.fr, http://www.ann. jussieu.fr/ ˜ lehyaric/ Antoine Le Hyaric is a research engineer from the ”Cen- tre National de la Recherche Scientifique” (CNRS) at LJLL . He is an expert in software engineering for scientific applications. He has applied his skills mainly to electromag- netics simulation, parallel computing and three-dimensional visualization.

Kohji Ohtsuka,mailto:ohtsuka@hkg.ac.jp, http://www.comfos.org/ Kohji Ohtsuka is a professor at the Hiroshima Kokusai Gakuin University, Japan and chairman of the World Scientific and Engineering academy and Society, Japan chapter. His research is in fracture dynamics, modeling and computing.

research is in fracture dynamics, modeling and computing. 1 Laboratoire Jacques-Louis Lions, Universit´e Pierre et
research is in fracture dynamics, modeling and computing. 1 Laboratoire Jacques-Louis Lions, Universit´e Pierre et
research is in fracture dynamics, modeling and computing. 1 Laboratoire Jacques-Louis Lions, Universit´e Pierre et
research is in fracture dynamics, modeling and computing. 1 Laboratoire Jacques-Louis Lions, Universit´e Pierre et

1 Laboratoire Jacques-Louis Lions, Universit´e Pierre et Marie Curie, Paris 2 Projet Alpines, Inria Rocquencourt.

4

´

Acknowledgments We are very grateful to l’ Ecole Polytechnique (Palaiseau, France) for printing the

second edition of this manual (http://www.polytechnique.fr ), and to l’Agence Nationale de

la Recherche (Paris, France) for funding of the extension of FreeFem++ to a parallel tridimensional version (http://www.agence-nationale-recherche.fr) R´ef´erence : ANR-07-CIS7-002-

01.

Contents

1 Introduction

 

13

1.1 Installation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

 

1.1.1 For everyone:

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

14

1.1.2 For the pros: Installation from sources

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

15

1.2 How to use FreeFem++

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

19

1.3 Environment variables, and the init file

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

20

1.4 History .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

21

2 Getting Started

 

23

 

2.0.1 FEM by FreeFem++

: how does it work?

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

24

2.0.2 Some Features of FreeFem++

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

29

2.1

The Development Cycle: Edit–Run/Visualize–Revise

.

.

.

.

.

.

.

.

.

.

.

.

.

29

3 Learning by Examples

 

31

3.1 Membranes

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

31

3.2 Heat Exchanger .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

36

3.3 Acoustics

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

38

3.4 Thermal Conduction

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

39

 

3.4.1 Axisymmetry: 3D Rod with circular section

.

.

.

.

.

.

.

.

.

.

.

.

.

.

41

3.4.2 A Nonlinear Problem : Radiation

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

3.5 Irrotational Fan Blade Flow and Thermal effects .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

42

 

3.5.1

Heat Convection around the airfoil

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

44

3.6 Pure Convection : The Rotating Hill

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

45

3.7 The System of elasticity

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

49

3.8 The System of Stokes for Fluids

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

51

3.9 A Projection Algorithm for the Navier-Stokes equations

.

.

.

.

.

.

.

.

.

.

.

52

3.10 Newton Method for the Steady Navier-Stokes equations .

.

.

.

.

.

.

.

.

.

.

.

56

3.11 A Large Fluid Problem .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

58

3.12 An Example with Complex Numbers

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

62

3.13 Optimal Control

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

63

3.14 A Flow with Shocks .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

65

3.15 Classification of the equations

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

67

4 Syntax

 

71

4.1 Data Types

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

71

4.2 List of major types

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

72

4.3 Global Variables .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

73

 

5

6

CONTENTS

4.4 System Commands

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

74

4.5 Arithmetics

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

75

4.6 string expression

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

77

4.7 Functions of one Variable

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

78

4.8 Functions of two Variables

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

 

4.8.1

Formula

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

4.8.2

FE-functions

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

80

Arrays

4.9 .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

81

 

4.9.1 Arrays with two integer indices versus matrices

.

.

.

.

.

.

.

.

.

.

.

.

87

4.9.2 Matrix construction and setting

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

88

4.9.3 Matrix Operations

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

90

4.9.4 Other arrays .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

93

4.10 Map arrays

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

94

4.11 Loops

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

94

4.12 Input/Output

4.12.1

.

.

.

.

. Script arguments .

4.13 preprocessor .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

95

97

97

4.14 Exception handling

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

99

5

Mesh Generation

 

103

5.1 Commands for Mesh Generation .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

103

 

5.1.1 Square

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

103

5.1.2 Border

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

104

5.1.3 Multy Border

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

107

5.1.4 Data Structures and Read/Write Statements for a Mesh

.

.

.

.

.

.

.

108

5.1.5 Mesh Connectivity

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

110

5.1.6 The keyword ”triangulate” .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

113

5.2 Boundary FEM Spaces Built as Empty Meshes

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

114

5.3 Remeshing .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

115

 

5.3.1

Movemesh

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

115

5.4 Regular Triangulation: hTriangle

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

117

5.5 Adaptmesh

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

117

5.6 Trunc

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

122

5.7 Splitmesh

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

123

5.8 Meshing Examples

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

124

5.9 How to change the label of elements and border elements of a mesh

.

.

.

.

.

128

5.10 Mesh in three dimensions

 

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

130

 

5.10.1 Read/Write Statements for a Mesh in 3D .

.

.

.

.

.

.

.

.

.

.

.

.

.

.

.

130

5.10.2 TeGen: A tetrahedral mesh generator

.

.

.

.

.

.

.