Next: , Previous: , Up: Solving problems   [Contents][Index]


3.3.1 Stationary diffusion problem

Assume that we want to solve the Poisson equation \Delta u(x,y) = f(x,y) on the unit square \Omega=(0,1)^2 with right-hand side f(x,y)=e^{x+y} and Dirichlet boundary conditions u(x,y)=0 for (x,y) \in \partial \Omega. The following command solves this equation approximately on a uniformly refined mesh using as termination criterion that the time for approximating the solution has increased beyond 20 seconds.

(let ((problem (cdr-model-problem (n-cube-domain 2)
                :source #'(lambda (x) #I(exp(x[0]+x[1]))))))
  (storing
    (solve (blackboard :problem problem :success-if '(> :time 5)))))

The result of the call to solve is a blackboard which we is saved in the global variable *result* for later reference. We can extract items from there using the function getbb, e.g. for plotting the solution:

(plot (getbb *result* :solution))

This can be abbreviated as

(plot (^ :solution))