Difference between revisions of "FreeFem++/Example"

From ScientificComputing
Jump to: navigation, search
(Created page with "As an example for using FreeFem++, we are going to solve a Poisson equation. For a given function <tt>f(x, y)</tt>, find a function <tt>u(x, y)</tt> satisfying −∆u(x, y)...")
 
Line 4: Line 4:
 
  u(x, y) = 0 for all (x, y) on ∂Ω
 
  u(x, y) = 0 for all (x, y) on ∂Ω
  
Here ∂Ω is the boundary of the bounded open set Ω ⊂ R
+
Here ∂Ω is the boundary of the bounded open set
2 and ∆u =
+
 
+
<math>Ω ⊂ R^2 and ∆u = \tfrac{^2u}{∂x^2} + \tfrac{^2u∂y^2</math>
2u
+
 
∂x2 +
 
 
2u
 
∂y2
 
.
 
 
The following is a FreeFem++ program which computes u when f(x, y) = xy and Ω is the
 
The following is a FreeFem++ program which computes u when f(x, y) = xy and Ω is the
 
unit disk. The boundary C = ∂Ω is
 
unit disk. The boundary C = ∂Ω is

Revision as of 12:24, 6 December 2016

As an example for using FreeFem++, we are going to solve a Poisson equation. For a given function f(x, y), find a function u(x, y) satisfying

−∆u(x, y) = f(x, y) for all (x, y) ∈ Ω
u(x, y) = 0 for all (x, y) on ∂Ω

Here ∂Ω is the boundary of the bounded open set

Failed to parse (lexing error): Ω ⊂ R^2 and ∆u = \tfrac{∂^2u}{∂x^2} + \tfrac{∂^2u∂y^2

The following is a FreeFem++ program which computes u when f(x, y) = xy and Ω is the unit disk. The boundary C = ∂Ω is C = {(x, y)| x = cos(t), y = sin(t), 0 ≤ t ≤ 2π}

[leonhard@euler06 ~]$ ls -ltr test.edp -rw-r--r-- 1 sfux T0000 283 Dec 6 12:56 test.edp [leonhard@euler06 ~]$ cat test.edp border C(t=0,2*pi){x=cos(t); y=sin(t);} mesh Th = buildmesh (C(50)); fespace Vh(Th,P1); Vh u,v; func f= x*y; real cpu=clock(); solve Poisson(u,v,solver=LU) = int2d(Th)(dx(u)*dx(v) + dy(u)*dy(v)) - int2d(Th)( f*v) + on(C,u=0) ; plot(u); cout << " CPU time = " << clock()-cpu << endl;