[SCM] Gerris Flow Solver branch, upstream, updated. b3aa46814a06c9cb2912790b23916ffb44f1f203

Stephane Popinet popinet at users.sourceforge.net
Fri May 15 02:51:15 UTC 2009


The following commit has been merged in the upstream branch:
commit 1f9a976ec46643af123408001e9004c1e0347764
Author: Stephane Popinet <popinet at users.sourceforge.net>
Date:   Tue Oct 19 12:10:19 2004 +1000

    Updates for release 0.6.0 (gerris--mainline--0.5--patch-8)
    
    gerris--mainline--0.5--patch-8
    Keywords: 0.6.0
    
    Tutorial and reference manual have been updated.
    A fix for MacOSX libtool has been included.
    Fix for incorrect call to gfs_interpolate in gfs2oogl.
    Fix for branch "stable" in cvs2cl.pl
    
    darcs-hash:20041019021019-aabb8-68e8e7b7ea7e14d9363c563c1f629b7bfa16493d.gz

diff --git a/.usermap b/.usermap
index d33d207..4d4fced 100644
--- a/.usermap
+++ b/.usermap
@@ -1 +1,2 @@
 popinet:Stéphane Popinet <popinet at users.sourceforge.net>;
+delaux:Sébastien Delaux <delaux at users.sourceforge.net>;
diff --git a/ChangeLog b/ChangeLog
index 6421093..64203d7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,653 @@
+2004-10-19 14:25  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* doc/tutorial/gfsview.png: file gfsview.png was initially added on
+	branch stable.
+
+2004-10-19 14:25  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* doc/gfs-sections.txt, doc/tmpl/adapt.sgml,
+	doc/tmpl/advection.sgml, doc/tmpl/domain-advection-vof.sgml,
+	doc/tmpl/domain-advection.sgml, doc/tmpl/domain.sgml,
+	doc/tmpl/event.sgml, doc/tmpl/fluid.sgml, doc/tmpl/ftt-basic.sgml,
+	doc/tmpl/ftt-other.sgml, doc/tmpl/ftt-topology.sgml,
+	doc/tmpl/gfs-unused.sgml, doc/tmpl/output.sgml,
+	doc/tmpl/output_error_norm.sgml, doc/tmpl/output_location.sgml,
+	doc/tmpl/output_scalar.sgml, doc/tmpl/output_simulation.sgml,
+	doc/tmpl/output_solid.sgml, doc/tmpl/output_solid_force.sgml,
+	doc/tmpl/poisson.sgml, doc/tmpl/simulation.sgml,
+	doc/tmpl/solid.sgml, doc/tutorial/.cvsignore,
+	doc/tutorial/Makefile.am, doc/tutorial/Makefile.deps,
+	doc/tutorial/gfsview.png, doc/tutorial/pre_fix.sh,
+	doc/tutorial/tutorial.tex, doc/tutorial/vorticity.png,
+	src/domain.c, src/output.c: Updated docs.
+
+2004-10-19 14:24  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/Makefile.am: Added missing tests for distrib.
+
+2004-10-19 14:23  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* tools/gfs2oogl.c: Fixed incorrect call to new gfs_interpolate.
+
+2004-10-19 14:22  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in, src/Makefile.am, modules/Makefile.am: Libtool fix
+	for MacOSX.
+
+2004-10-18 15:39  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/simulation.c: GTS solid files can also be written in binary
+	format.
+
+2004-10-14 16:30  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h, graphic.c, output.c, domain.c:
+	gfs_interpolate uses proper bi(tri)linear interpolation thanks to
+	gfs_cell_corner_value.
+
+2004-10-14 11:14  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: output.c, output.h, boundary.c, domain.c, domain.h,
+	fluid.c, fluid.h, ftt.c, ftt.h, gerris.c: Support for binary
+	simulation files.
+
+2004-10-11 14:36  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/simulation.c: Outputs diffusion bc.
+
+2004-10-10 21:25  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: boundary.c, domain.c, fluid.c, fluid.h, init.c, poisson.c,
+	simulation.c, source.c, timestep.c, timestep.h, utils.c: Initial
+	implementation of boundary conditions for diffusion equations in
+	parameter files.
+
+2004-10-08 18:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* doc/tmpl/.cvsignore: Updated for interoperability with arch.
+
+2004-10-08 18:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/poisson/misc/.cvsignore, test/poisson/models/.cvsignore,
+	test/poisson/order/reference2D/.cvsignore,
+	test/poisson/order/reference3D/.cvsignore,
+	test/advection/graphic/tests/.cvsignore,
+	test/advection/order/reference/.cvsignore,
+	test/euler/parameters/.cvsignore,
+	test/euler/reference2D/.cvsignore, test/euler/scripts/.cvsignore,
+	test/poisson/convergence/reference2D/.cvsignore,
+	test/poisson/convergence/reference3D/.cvsignore,
+	doc/tmpl/.cvsignore: file .cvsignore was initially added on branch
+	stable.
+
+2004-10-08 18:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* tools/.cvsignore, test/mpi/.cvsignore, test/ocean/.cvsignore,
+	test/poisson/.cvsignore, test/poisson/convergence/.cvsignore,
+	test/poisson/order/.cvsignore,
+	test/advection/graphic/tests/translate1/.cvsignore,
+	test/advection/graphic/tests/translate2/.cvsignore,
+	test/advection/graphic/tests/translate3/.cvsignore,
+	test/advection/graphic/tests/translate6/.cvsignore,
+	test/advection/graphic/tests/translate_refine1/.cvsignore,
+	test/advection/order/.cvsignore, test/euler/.cvsignore,
+	test/.cvsignore, test/advection/.cvsignore,
+	test/advection/graphic/.cvsignore,
+	test/advection/graphic/tests/rotate1/.cvsignore,
+	test/advection/graphic/tests/rotate2/.cvsignore,
+	test/advection/graphic/tests/rotate3/.cvsignore,
+	test/advection/graphic/tests/rotate_refine1/.cvsignore, .cvsignore,
+	doc/.cvsignore, doc/figures/.cvsignore, doc/tutorial/.cvsignore,
+	modules/.cvsignore, src/.cvsignore, test/poisson/misc/.cvsignore,
+	test/poisson/models/.cvsignore,
+	test/poisson/order/reference2D/.cvsignore,
+	test/poisson/order/reference3D/.cvsignore,
+	test/advection/graphic/tests/.cvsignore,
+	test/advection/order/reference/.cvsignore,
+	test/euler/parameters/.cvsignore,
+	test/euler/reference2D/.cvsignore, test/euler/scripts/.cvsignore,
+	test/poisson/convergence/reference2D/.cvsignore,
+	test/poisson/convergence/reference3D/.cvsignore: Updated for
+	interoperability with arch.
+
+2004-10-08 16:01  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* tools/gfs2oogl.c: Fixed stupid error of last checkin.
+
+2004-10-08 16:00  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/adaptive.c, src/domain.c, src/utils.h, configure.in: Robust
+	pointer/double storage. This should fix the problem on 64 bits
+	machines.
+
+2004-10-07 19:04  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/simulation.c: Added check for solid surfaces intersecting
+	boundary cells with no neighbors (this can cause problems for
+	diffusive terms interpolations).
+
+2004-10-07 18:59  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: ftt.c, solid.c: Cleanup.
+
+2004-10-07 18:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Improved bug reporting for solid boundary fluxes.
+
+2004-10-07 18:55  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/boundary.c: All solid parameters are now matched in boundary
+	cells cut by the solid boundary.
+
+2004-10-07 14:33  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/init.c: New classes.  New derived variables (Lambda2,
+	Curvature).
+
+2004-10-07 14:32  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* tools/gfs2oogl.c, tools/gfs2other.c, src/simulation.c,
+	src/graphic.c, src/ocean.c, src/output.c: Now use
+	gfs_cell_coarse_init and v->fine_coarse for initialisation of
+	coarser levels.
+
+2004-10-07 14:30  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/poisson.c: Cosmetics.
+
+2004-10-07 14:28  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h: New functions for curvature and
+	streamline curvature.
+
+2004-10-07 14:27  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: adaptive.c, adaptive.h: New classes GfsAdaptCurvature and
+	GfsAdaptStreamlineCurvature.  New option to store the adaptive cost
+	as an additional variable.
+
+2004-10-05 18:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in: New development version 0.5.0. From now on odd
+	version numbers are development versions.
+
+2004-10-05 18:55  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h, init.c, utils.c, utils.h: Added lambda2
+	calculation of Jeong and Hussain.
+
+2004-10-05 12:31  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: output.c, output.h: Generic "first call" functionality for
+	GfsOutputClass.  GfsOutputSolidForce comments.
+
+2004-10-05 12:30  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/domain.c: Implementation of 3D solid force.
+
+2004-10-04 18:27  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/vof.c: Call to gfs_line_center is valid only if 0 < c < 1.
+
+2004-10-04 18:19  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/solid.c: Robust checks for destruction of root cells.
+
+2004-10-04 18:17  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Debugging stuff for 3D interpolated diffusion
+	fluxes.  Removed calls to interpolated fluxes when weight is zero.
+
+2004-10-01 19:11  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Generalised interpolated mixed cell fluxes to 3D.
+
+2004-10-01 16:58  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: vof.c, vof.h: Added VOF center of mass calculation which
+	required access to the 2D interface reconstruction in 3D.
+
+2004-10-01 16:57  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/solid.c: New gfs_face_ca implementation generalised to 3D
+	using VOF center of mass calculation.
+
+2004-10-01 16:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Uses new gfs_face_ca implementation.
+
+2004-10-01 16:55  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/advection.c: face upwinding works for 2D3 as in 2D apart from
+	the z-directions which must always be fine/fine.
+
+2004-10-01 16:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ocean.c: Adaptivity works only if done last.
+
+2004-09-30 12:11  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/graphic.c: Cosmetics.
+
+2004-09-30 12:10  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: init.c, output.c, output.h: New objects: OutputEnergy,
+	OutputCorrelation, OutputProgress.
+
+2004-09-30 12:01  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ftt.c: Fixed ftt_cell_traverse_box for use in 2D3.
+
+2004-09-30 12:00  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/event.c: Flushes stdout and stderr before calling
+	EventScript. This seems to ensure that EventScript writes to this
+	file descriptors occur in the right order.
+
+2004-09-30 11:57  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in, test/Makefile.am: Added ocean tests.
+
+2004-09-30 11:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/.cvsignore: Initial revision.
+
+2004-09-30 11:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/.cvsignore: file .cvsignore was initially added on
+	branch stable.
+
+2004-09-30 11:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/: Makefile.am, basin.gts, geo.sh, waves.sh: Initial
+	revision.
+
+2004-09-30 11:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/basin.gts: file basin.gts was initially added on
+	branch stable.
+
+2004-09-30 11:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/geo.sh: file geo.sh was initially added on branch
+	stable.
+
+2004-09-30 11:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/Makefile.am: file Makefile.am was initially added on
+	branch stable.
+
+2004-09-30 11:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/ocean/waves.sh: file waves.sh was initially added on branch
+	stable.
+
+2004-09-29 19:29  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/domain.c: Fixed calculation of force on embedded boundary.
+
+2004-09-29 19:28  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Preliminary generalisation of interpolated
+	(diffusion) flux calculation.
+
+2004-09-28 12:20  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/fluid.c: Variables without name should not be written.
+
+2004-09-27 13:48  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: graphic.c, graphic.h, output.c, output.h: Merged from ocean
+	branch support for bounding boxes for PPM output.
+
+2004-09-23 18:10  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h: gfs_cell_corner_value() works in 3D using
+	inverse distance squared weighted averages.
+
+2004-09-23 18:09  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: ftt.c, ftt.h: New function ftt_cell_neighbor_is_brother().
+
+2004-09-17 19:53  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ftt.h: New function ftt_corner_pos().
+
+2004-09-17 19:52  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h: New function gfs_cell_corner_value() (2D
+	only).
+
+2004-09-17 19:50  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ftt.c: Fixed bug in ftt_cell_child_corner().  New function
+	ftt_corner_pos().
+
+2004-09-16 15:33  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/timestep.c: Clearer timing labels.
+
+2004-09-16 15:31  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in: mpicc can now be specified using --with-mpicc= in
+	configure. This works both with mpich and lam-mpi (and possibly
+	others).
+
+2004-09-16 12:49  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/mpi_boundary.c: Fixed incorrect tag_shift computation. Now
+	works with LAM-MPI.
+
+2004-09-16 12:48  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/euler/Makefile.am, test/mpi/Makefile.am, configure.in,
+	modules/Makefile.am, src/Makefile.am, test/advection/Makefile.am:
+	Configure now uses only mpicc when compiling MPI version.
+
+2004-09-15 18:49  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/mpi/read.c: Fixed call to new gfs_domain_read() function.
+
+2004-09-15 18:49  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: domain.c, domain.h, ocean.c: Fixed MPI support. 
+	post_read() method takes a GtsFile as argument (useful for error
+	messages).
+
+2004-09-15 18:47  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/poisson/Makefile.am, acconfig.h, configure.in,
+	test/advection/Makefile.am, test/mpi/Makefile.am: Changed the way
+	MPI compilation is done (does not use mpicc anymore) Only tested
+	with MPICH Cleanup of obsolete acconfig stuff
+
+2004-07-23 17:23  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* doc/tutorial/l2hconf.pm: Fixed paths (it's not portable anyway so
+	sthg should be done about it).
+
+2004-07-23 16:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* doc/tutorial/epsbbox.sh: Changed to use ps2eps (apt-get install
+	ps2eps). ps2epsi was unreliable.
+
+2004-07-23 15:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/Makefile.am: Without this crappy fix 'make dist' would not
+	work (it insisted in building dx2D.c due to some autoconf/automake
+	weirdness).
+
+2004-07-23 13:29  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* test/poisson/poisson.c: Updated for new Poisson solver interface.
+
+2004-07-23 13:27  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* modules/periodic_flow.mod: Removed part using old interface. This
+	file should be removed at some point, it is obsolete.
+
+2004-07-23 12:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: adaptive.c, domain.c, domain.h, ocean.c, output.c,
+	simulation.c, timestep.c, vof.c: Cleanup of timing stuff.
+
+2004-07-23 10:48  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/refine.c: In RefineSolid, no need to compute boundary cells
+	solid fractions (it will be done consistently with the interior
+	domain by gfs_domain_match()).
+
+2004-07-23 10:47  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/adaptive.c: Boundary cells cut by solid can be refined.
+
+2004-07-22 17:39  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: ocean.c, ocean.h: Removed rigid-lid implementation (which
+	never really worked).
+
+2004-07-22 17:35  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* TODO, src/.cvsignore, tools/.cvsignore: Updated.
+
+2004-07-22 17:35  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/refine.c: Uses the new gfs_object_class_from_name().
+
+2004-07-22 17:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/mpi_boundary.c: Updated calls to
+	ftt_cell_children_direction().
+
+2004-07-22 17:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/adaptive.c: Cosmetics.
+
+2004-07-22 17:34  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/Makefile.am, src/dx.c, src/gerris2D.pc.in, src/gfs-config.in,
+	src/graphic.c, src/graphic.h, src/tension.c, src/vof.c,
+	test/advection/Makefile.am, test/euler/Makefile.am,
+	test/mpi/Makefile.am, test/poisson/Makefile.am,
+	test/poisson/poisson.c, tools/Makefile.am, tools/gfs2other.c,
+	tools/gfs2vtk.c, tools/gfscompare.c, tools/ppmcombine.c,
+	modules/Makefile.am: Added config for 2D3 version.
+
+2004-07-22 17:30  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* tools/gfs2oogl.c: Gnuplot output can now be used for all
+	versions.
+
+2004-07-22 17:26  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: utils.c, utils.h: Cleanup of file descriptors when building
+	modules.
+	
+	Added option to link external library to modules through "#link"
+	directive.
+	
+	All the above merged from "ocean" branch.
+	
+	gfs_object_class_from_name() allows the use of shorter keywords in
+	parameter files (no need for the "Gfs" prefix anymore).
+
+2004-07-22 17:23  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: timestep.c, timestep.h: A new pressure correction
+	formulation ensures that both normal velocity corrections and
+	centered velocity correction (as well as intermediate g[]
+	gradients) are consistent.
+	
+	This new formulation should also work when momentum source terms
+	are present (and removes the hack in the previous implementation).
+
+2004-07-22 17:20  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: source.c, source.h: New GfsSourceDiffusionExplicit object.
+
+2004-07-22 17:18  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/solid.c: Adapted for taking into account non-constant aspect
+	ratios.
+
+2004-07-22 17:17  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: simulation.c, simulation.h: Variables can be dynamically
+	added in the parameter files.
+	
+	Any number of the new GfsVariableTracer variables can be specified
+	and advected/diffused.
+	
+	run() is a new method of GfsSimulation() i.e. different types of
+	simulations can be defined.
+	
+	"Half timestep" events can be used.
+	
+	gfs_simulation_read() has changed interface.
+	
+	A new "dtmax" argument can be given in GfsTime.
+	
+	A new "g" parameter has been added to "GfsPhysicalParams".
+
+2004-07-22 17:11  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: poisson.c, poisson.h: Updated calls to
+	ftt_cell_children_direction().	Relax can now solve an Helmoltz
+	equation (rather than Poisson using the g[0] coefficient).  The
+	number of dimensions (2 or 3) can be specified.
+
+2004-07-22 17:08  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: output.c, output.h: Adapted OutputPPM to ocean model.
+
+2004-07-22 17:06  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ocean.c: file ocean.c was initially added on branch stable.
+
+2004-07-22 17:06  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/ocean.h: file ocean.h was initially added on branch stable.
+
+2004-07-22 17:06  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: ocean.c, ocean.h: Initial implementation of Ocean model.
+
+2004-07-22 17:04  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/init.c: Added cell_level, cell_fraction derived variables. 
+	Removed "C" and "CH" variables.  Added new classes (and old
+	simulation classes).
+
+2004-07-22 16:59  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: gerris.c, gerris_dir.c: Updated call to
+	gfs_simulation_read().
+
+2004-07-22 16:58  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: ftt.c, ftt.h, ftt_internal.c: First implementation of "2D3"
+	quadtree.  ftt_cell_children_direction() now returns the number of
+	children in the given direction (which can now be different from
+	FTT_CELLS/2).
+
+2004-07-22 16:56  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h: Most gradient and interpolation functions
+	should work with variable number of children depending on the
+	neighboring directions.  New function gfs_normal_divergence_2D(). 
+	Variable "C" and "CH" are not defined anymore.
+
+2004-07-22 16:52  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: event.c, event.h: New "realised" flag for half-timestep
+	events.
+
+2004-07-22 16:49  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: domain.h, domain.c: New post_read() method.  New FTT_XY
+	direction for face traversal.  gfs_domain_read() used new
+	gts_graph_read() implementation which returns the correct graph
+	type.  New functions gfs_domain_replace_variable(),
+	gfs_domain_add_new_variable().
+
+2004-07-22 16:45  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: boundary.c, boundary.h: Added config for 2D3 version. 
+	face_symmetry (default condition GfsBc) now properly sets vector
+	quantities (velocity and gradient).
+
+2004-07-22 16:42  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/advection.c: Added config for 2D3 version.  Pressure gradient
+	correction is multiplied by dt.  Flux calculations take into
+	account the number of children in the corresponding direction.
+
+2004-07-22 16:36  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in: Added config for 2D3 version.
+
+2004-06-29 14:47  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: timestep.c, timestep.h: Updated advection of variables. 
+	Some fixes for mixed cell refinement.  Most of this merged from
+	ocean branch.
+
+2004-06-29 14:40  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/tension.c: Changed names to "mac" and "centered" sources.
+
+2004-06-29 14:39  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: source.c, source.h: Changed names to "mac" and "centered"
+	sources.  Initial implicit Coriolis implementation.
+
+2004-06-29 14:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/init.c: Added new classes.
+
+2004-06-29 14:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: fluid.c, fluid.h: New interface for
+	gfs_cell_traverse_mixed.  All this merged from ocean branch.
+
+2004-06-29 14:35  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: domain.c, domain.h: Cosmetics.	New interface for
+	gfs_domain_traverse_mixed.  New function gfs_domain_remove_islands.
+	 All this merged from ocean branch.
+
+2004-06-29 14:33  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: advection.c, advection.h: Generic upwinding (including
+	none).	Fixes for some mixed cell refinement constraints.  All this
+	merged from ocean branch.
+
+2004-06-16 12:35  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: event.c, utils.c: Added missing header file necessary for
+	Fink (thanks to Dan Kelley for the fix).
+
+2004-05-23 19:08  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/init.c: Cosmetics.
+
+2004-05-23 19:06  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: domain.c, domain.h: Added "binary" argument (first step for
+	binary file format).
+
+2004-05-23 19:05  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: adaptive.c, fluid.c: fine_coarse is initialised by default
+	to gfs_get_from_below_intensive.
+
+2004-05-21 11:41  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* configure.in, src/.cvsignore, src/Makefile.am: Added pkgconfig
+	files.
+
+2004-05-21 11:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/: gerris2D.pc.in, gerris3D.pc.in: Initial revision.
+
+2004-05-21 11:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/gerris3D.pc.in: file gerris3D.pc.in was initially added on
+	branch stable.
+
+2004-05-21 11:37  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/gerris2D.pc.in: file gerris2D.pc.in was initially added on
+	branch stable.
+
+2004-05-21 11:36  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* src/gfs-config.in: Removed unused stuff.
+
+2004-05-20 12:45  Stéphane Popinet <popinet at users.sourceforge.net>;
+
+	* NEWS, ChangeLog: Updated.
+
 2004-05-20 11:51  Stéphane Popinet <popinet at users.sourceforge.net>;
 
 	* doc/tutorial/Makefile.am: Uses the correct local gerris2D to get
@@ -62,6 +712,11 @@
 
 2004-05-16 21:30  Stéphane Popinet <popinet at users.sourceforge.net>;
 
+	* doc/: sgml_not_in_docs.sh, sgml_not_in_sections.sh: Helper
+	scripts for doc generation.
+
+2004-05-16 21:30  Stéphane Popinet <popinet at users.sourceforge.net>;
+
 	* doc/sgml_not_in_sections.sh: file sgml_not_in_sections.sh was
 	initially added on branch stable.
 
@@ -70,11 +725,6 @@
 	* doc/sgml_not_in_docs.sh: file sgml_not_in_docs.sh was initially
 	added on branch stable.
 
-2004-05-16 21:30  Stéphane Popinet <popinet at users.sourceforge.net>;
-
-	* doc/: sgml_not_in_docs.sh, sgml_not_in_sections.sh: Helper
-	scripts for doc generation.
-
 2004-05-16 21:27  Stéphane Popinet <popinet at users.sourceforge.net>;
 
 	* doc/tmpl/: adapt.sgml, adapt_gradient.sgml, adapt_vorticity.sgml,
@@ -89,50 +739,50 @@
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/: adapt_not_box.sgml, diffusion.sgml, event_script.sgml,
-	event_stop.sgml, event_sum.sgml, function.sgml, generic_init.sgml,
-	init_fraction.sgml, output_adapts.sgml, output_diffusion.sgml,
-	output_error_norm.sgml, output_solid_force.sgml,
-	source_generic.sgml: Docs for new objects.
+	* doc/tmpl/adapt_not_box.sgml: file adapt_not_box.sgml was
+	initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/diffusion.sgml: file diffusion.sgml was initially added
-	on branch stable.
+	* doc/tmpl/generic_init.sgml: file generic_init.sgml was initially
+	added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/event_sum.sgml: file event_sum.sgml was initially added
-	on branch stable.
+	* doc/tmpl/source_generic.sgml: file source_generic.sgml was
+	initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/generic_init.sgml: file generic_init.sgml was initially
-	added on branch stable.
+	* doc/tmpl/output_solid_force.sgml: file output_solid_force.sgml
+	was initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/adapt_not_box.sgml: file adapt_not_box.sgml was
+	* doc/tmpl/init_fraction.sgml: file init_fraction.sgml was
 	initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/source_generic.sgml: file source_generic.sgml was
-	initially added on branch stable.
+	* doc/tmpl/: adapt_not_box.sgml, diffusion.sgml, event_script.sgml,
+	event_stop.sgml, event_sum.sgml, function.sgml, generic_init.sgml,
+	init_fraction.sgml, output_adapts.sgml, output_diffusion.sgml,
+	output_error_norm.sgml, output_solid_force.sgml,
+	source_generic.sgml: Docs for new objects.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/event_script.sgml: file event_script.sgml was initially
-	added on branch stable.
+	* doc/tmpl/diffusion.sgml: file diffusion.sgml was initially added
+	on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/function.sgml: file function.sgml was initially added on
-	branch stable.
+	* doc/tmpl/output_error_norm.sgml: file output_error_norm.sgml was
+	initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/init_fraction.sgml: file init_fraction.sgml was
+	* doc/tmpl/output_adapts.sgml: file output_adapts.sgml was
 	initially added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
@@ -142,23 +792,23 @@
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/output_adapts.sgml: file output_adapts.sgml was
-	initially added on branch stable.
+	* doc/tmpl/event_sum.sgml: file event_sum.sgml was initially added
+	on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/output_diffusion.sgml: file output_diffusion.sgml was
-	initially added on branch stable.
+	* doc/tmpl/event_script.sgml: file event_script.sgml was initially
+	added on branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/output_error_norm.sgml: file output_error_norm.sgml was
-	initially added on branch stable.
+	* doc/tmpl/function.sgml: file function.sgml was initially added on
+	branch stable.
 
 2004-05-16 21:26  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* doc/tmpl/output_solid_force.sgml: file output_solid_force.sgml
-	was initially added on branch stable.
+	* doc/tmpl/output_diffusion.sgml: file output_diffusion.sgml was
+	initially added on branch stable.
 
 2004-05-16 21:24  Stéphane Popinet <popinet at users.sourceforge.net>;
 
@@ -585,12 +1235,12 @@
 
 2003-05-20 17:34  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* src/utils.h: file utils.h was initially added on branch
+	* src/utils.c: file utils.c was initially added on branch
 	cm-pressure.
 
 2003-05-20 17:34  Stéphane Popinet <popinet at users.sourceforge.net>;
 
-	* src/utils.c: file utils.c was initially added on branch
+	* src/utils.h: file utils.h was initially added on branch
 	cm-pressure.
 
 2003-05-16 13:13  Stéphane Popinet <popinet at users.sourceforge.net>;
diff --git a/Makefile.am b/Makefile.am
index d4a1268..07a749e 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -7,4 +7,4 @@ dist-hook:
 	$(RM) `find $(distdir) -name ".cvsignore" -type f -print`
 
 changelog:
-	cvs2cl.pl --usermap .usermap --prune
+	cvs2cl.pl --usermap .usermap --prune --follow stable
diff --git a/NEWS b/NEWS
index 9bece3f..913d1f6 100644
--- a/NEWS
+++ b/NEWS
@@ -1,3 +1,48 @@
+20/10/2004: Release 0.6.0
+
+First the good news:
+
+Diffusion equations with complex boundary conditions can now be solved
+in 3D!
+
+Now the bad news:
+
+Variable density support is broken in this version (use 0.3.0 if you
+need it). The reason is that this part of the code needs to be
+reviewed/generalised to make sure it does the right thing.
+
+The main changes/improvements in this version are:
+
+- Support for diffusion equations in 3D complex geometries
+- Flexible boundary conditions on embedded solid surfaces for
+  diffusion equation in parameter files (see the tutorial)
+- Updated tutorial and reference manual
+- An initial implementation of a shallow-water 2D and 3D hydrostatic
+  ocean model with semi-implicit Coriolis source terms and barotropic
+  equation (multigrid for Helmoltz equation)
+- Support for different types of simulations (ocean and incompressible
+  Euler/NS for the moment)
+- Support for multiple tracers
+- Much improved interpolation of variables
+- New consistent pressure correction formulation (which works with
+  momentum source terms near boundaries)
+- MPI configuration reworked (uses mpicc): tested with mpich and
+  lam-mpi
+- Bounding boxes for PPM output: allows to select a limited area for
+  PPM output
+- Optional binary file format (4 to 5 times faster file read)
+
+Minor bug corrections and improvements:
+
+- pkgconfig support
+- MacOSX support
+- Bug fix for 64 bits machines
+- Relaxed constraints on refinement (still needs work)
+- External library links in GfsFunction
+- Short keyword support
+- Lambda2 criterion of Jeong and Hussain (for vortex detection)
+- etc...
+
 20/05/2004: Release 0.3.0
 
 Quite a lot has happened since 0.2.0. The main changes/improvements are:
diff --git a/configure.in b/configure.in
index 113b80d..05bab23 100644
--- a/configure.in
+++ b/configure.in
@@ -12,7 +12,7 @@ dnl are available for $ac_help expansion (don't we all *love* autoconf?)
 # set GFS_BINARY_AGE and GFS_INTERFACE_AGE to 0.
 #
 GFS_MAJOR_VERSION=0
-GFS_MINOR_VERSION=5
+GFS_MINOR_VERSION=6
 GFS_MICRO_VERSION=0
 GFS_INTERFACE_AGE=0
 GFS_BINARY_AGE=0
@@ -110,6 +110,13 @@ then
   LIBTOOL="$LIBTOOL --silent"
 fi
 
+dnl Fix for MacOSX libtool
+case "$build" in
+  *-apple-darwin*) NO_UNDEFINED="-module" ;;
+  *)               NO_UNDEFINED="-no-undefined" ;;
+esac
+AC_SUBST(NO_UNDEFINED)
+
 AC_PROG_AWK
 AC_ISC_POSIX
 AC_HEADER_STDC
diff --git a/doc/.arch-inventory b/doc/.arch-inventory
index d7b670e..3931d84 100644
--- a/doc/.arch-inventory
+++ b/doc/.arch-inventory
@@ -4,4 +4,4 @@ precious ^gfs-undocumented\.txt$
 precious ^gfs-unused\.txt$
 precious ^html$
 precious ^sgml$
-precious ^tmpl\.stamp$
+precious ^.*\.stamp$
diff --git a/doc/gfs-sections.txt b/doc/gfs-sections.txt
index 3e5e117..e2e7c8a 100644
--- a/doc/gfs-sections.txt
+++ b/doc/gfs-sections.txt
@@ -33,6 +33,8 @@ ftt_cell_set_level
 ftt_cell_pos
 ftt_cell_relative_pos
 ftt_cell_set_pos
+ftt_corner_pos
+ftt_corner_relative_pos
 ftt_level_size
 ftt_cell_size
 ftt_cell_volume
@@ -79,6 +81,7 @@ ftt_cell_neighbor
 ftt_cell_neighbor_not_cached
 ftt_cell_set_neighbor
 ftt_cell_set_neighbor_match
+ftt_cell_neighbor_is_brother
 </SECTION>
 
 <SECTION>
@@ -99,8 +102,10 @@ ftt_cell_traverse_rewind
 ftt_cell_traverse_destroy
 <SUBSECTION>
 ftt_cell_write
+ftt_cell_write_binary
 FttCellWriteFunc
 ftt_cell_read
+ftt_cell_read_binary
 FttCellReadFunc
 ftt_cell_draw
 <SUBSECTION>
@@ -183,9 +188,14 @@ gfs_cell_dirichlet_gradient
 gfs_cell_dirichlet_gradient_flux
 gfs_cell_dirichlet_value
 gfs_cell_laplacian
+GfsInterpolator
+gfs_cell_corner_interpolator
+gfs_cell_corner_value
 <SUBSECTION>
 gfs_cell_write
+gfs_cell_write_binary
 gfs_cell_read
+gfs_cell_read_binary
 </SECTION>
 
 <SECTION>
@@ -253,6 +263,9 @@ gfs_predicted_face_velocities
 <TITLE>Volume of Fluid advection</TITLE>
 gfs_plane_alpha
 gfs_plane_volume
+gfs_line_alpha
+gfs_line_area
+gfs_line_center
 gfs_cell_vof_advection
 gfs_tracer_vof_advection
 </SECTION>
@@ -286,6 +299,8 @@ GfsDomain
 <SUBSECTION>
 gfs_domain_class
 gfs_domain_add_variable
+gfs_domain_add_new_variable
+gfs_domain_replace_variable
 gfs_domain_cell_traverse
 gfs_domain_cell_traverse_boundary
 gfs_domain_cell_traverse_box
@@ -308,9 +323,12 @@ gfs_domain_read
 gfs_domain_split
 gfs_domain_variable_sources
 gfs_domain_remove_droplets
+gfs_domain_remove_islands
 gfs_domain_advect_point
 gfs_domain_cfl
 gfs_domain_size
+gfs_domain_timer_start
+gfs_domain_timer_stop
 </SECTION>
 
 <SECTION>
diff --git a/doc/tmpl/adapt.sgml b/doc/tmpl/adapt.sgml
index 42a1c93..aa3ea97 100644
--- a/doc/tmpl/adapt.sgml
+++ b/doc/tmpl/adapt.sgml
@@ -90,6 +90,7 @@ with
 @maxcells: 
 @cmax: 
 @weight: 
+ at c: 
 @cost: 
 
 <!-- ##### FUNCTION gfs_adapt_class ##### -->
diff --git a/doc/tmpl/advection.sgml b/doc/tmpl/advection.sgml
index dd4f590..edf255e 100644
--- a/doc/tmpl/advection.sgml
+++ b/doc/tmpl/advection.sgml
@@ -23,7 +23,7 @@ Advection scheme
 @dt: 
 @gradient: 
 @use_centered_velocity: 
- at use_centered_upwinding: 
+ at upwinding: 
 @flux: 
 @scheme: 
 @rho: 
@@ -70,8 +70,10 @@ Advection scheme
 </para>
 
 @face: 
- at centered_upwinding: 
+ at upwinding: 
 @Returns: 
+<!-- # Unused Parameters # -->
+ at centered_upwinding: 
 
 
 <!-- ##### FUNCTION gfs_face_advection_flux ##### -->
@@ -107,6 +109,7 @@ Advection scheme
 </para>
 
 @face: 
+ at upwinding: 
 
 
 <!-- ##### FUNCTION gfs_face_interpolated_normal_velocity ##### -->
diff --git a/doc/tmpl/domain-advection-vof.sgml b/doc/tmpl/domain-advection-vof.sgml
index 00ea8ae..6976c43 100644
--- a/doc/tmpl/domain-advection-vof.sgml
+++ b/doc/tmpl/domain-advection-vof.sgml
@@ -35,6 +35,38 @@ Volume of Fluid advection
 @Returns: 
 
 
+<!-- ##### FUNCTION gfs_line_alpha ##### -->
+<para>
+
+</para>
+
+ at m: 
+ at c: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gfs_line_area ##### -->
+<para>
+
+</para>
+
+ at m: 
+ at alpha: 
+ at c1: 
+ at Returns: 
+
+
+<!-- ##### FUNCTION gfs_line_center ##### -->
+<para>
+
+</para>
+
+ at m: 
+ at alpha: 
+ at c: 
+ at p: 
+
+
 <!-- ##### FUNCTION gfs_cell_vof_advection ##### -->
 <para>
 
diff --git a/doc/tmpl/domain-advection.sgml b/doc/tmpl/domain-advection.sgml
index 6053566..63adc2a 100644
--- a/doc/tmpl/domain-advection.sgml
+++ b/doc/tmpl/domain-advection.sgml
@@ -66,6 +66,7 @@ Advection
 </para>
 
 @domain: 
+ at dimension: 
 @par: 
 @dpar: 
 
@@ -87,6 +88,7 @@ Advection
 </para>
 
 @domain: 
+ at d: 
 @par: 
 
 
diff --git a/doc/tmpl/domain.sgml b/doc/tmpl/domain.sgml
index 588bd0f..4f12419 100644
--- a/doc/tmpl/domain.sgml
+++ b/doc/tmpl/domain.sgml
@@ -44,6 +44,7 @@ Fluid domain
 </para>
 
 @parent_class: 
+ at post_read: 
 
 <!-- ##### STRUCT GfsDomain ##### -->
 <para>
@@ -53,17 +54,9 @@ Fluid domain
 @parent: 
 @pid: 
 @timer: 
- at mac_projection: 
- at approximate_projection: 
- at centered_velocity_advection: 
- at tracer_advection: 
- at predicted_face_velocities: 
- at adapt: 
+ at timers: 
 @timestep: 
 @size: 
- at bc: 
- at face_bc: 
- at match: 
 @profile_bc: 
 @mpi_messages: 
 @mpi_wait: 
@@ -73,6 +66,7 @@ Fluid domain
 @variables: 
 @variables_size: 
 @variables_io: 
+ at binary: 
 @max_depth_write: 
 
 <!-- ##### FUNCTION gfs_domain_class ##### -->
@@ -93,6 +87,25 @@ Fluid domain
 @Returns: 
 
 
+<!-- ##### FUNCTION gfs_domain_add_new_variable ##### -->
+<para>
+
+</para>
+
+ at domain: 
+ at v: 
+
+
+<!-- ##### FUNCTION gfs_domain_replace_variable ##### -->
+<para>
+
+</para>
+
+ at domain: 
+ at v: 
+ at with: 
+
+
 <!-- ##### FUNCTION gfs_domain_cell_traverse ##### -->
 <para>
 
@@ -140,6 +153,8 @@ Fluid domain
 </para>
 
 @domain: 
+ at order: 
+ at flags: 
 @func: 
 @data: 
 
@@ -298,9 +313,10 @@ Fluid domain
 
 </para>
 
- at domain: 
 @fp: 
 @Returns: 
+<!-- # Unused Parameters # -->
+ at domain: 
 
 
 <!-- ##### FUNCTION gfs_domain_split ##### -->
@@ -312,25 +328,25 @@ Fluid domain
 @one_box_per_pe: 
 
 
-<!-- ##### FUNCTION gfs_domain_variable_sources ##### -->
+<!-- ##### FUNCTION gfs_domain_remove_droplets ##### -->
 <para>
 
 </para>
 
 @domain: 
- at v: 
- at sv: 
- at dt: 
+ at c: 
+ at min: 
 
 
-<!-- ##### FUNCTION gfs_domain_remove_droplets ##### -->
+<!-- ##### FUNCTION gfs_domain_remove_islands ##### -->
 <para>
 
 </para>
 
 @domain: 
- at c: 
 @min: 
+ at cleanup: 
+ at data: 
 
 
 <!-- ##### FUNCTION gfs_domain_advect_point ##### -->
@@ -365,3 +381,21 @@ Fluid domain
 @Returns: 
 
 
+<!-- ##### FUNCTION gfs_domain_timer_start ##### -->
+<para>
+
+</para>
+
+ at domain: 
+ at name: 
+
+
+<!-- ##### FUNCTION gfs_domain_timer_stop ##### -->
+<para>
+
+</para>
+
+ at domain: 
+ at name: 
+
+
diff --git a/doc/tmpl/event.sgml b/doc/tmpl/event.sgml
index f3b45e0..1bf1ab0 100644
--- a/doc/tmpl/event.sgml
+++ b/doc/tmpl/event.sgml
@@ -93,6 +93,7 @@ with
 
 @parent_class: 
 @event: 
+ at event_half: 
 
 <!-- ##### STRUCT GfsEvent ##### -->
 <para>
@@ -110,6 +111,7 @@ with
 @istep: 
 @n: 
 @end_event: 
+ at realised: 
 
 <!-- ##### FUNCTION gfs_event_class ##### -->
 <para>
diff --git a/doc/tmpl/fluid.sgml b/doc/tmpl/fluid.sgml
index 6721893..7d3b3dd 100644
--- a/doc/tmpl/fluid.sgml
+++ b/doc/tmpl/fluid.sgml
@@ -142,6 +142,7 @@ The fluid variables associated with a fluid cell.
 @derived: 
 @fine_coarse: 
 @sources: 
+ at surface_bc: 
 @next: 
 @p: 
 
@@ -277,16 +278,6 @@ The fluid variables associated with a fluid cell.
 @v: 
 
 
-<!-- ##### FUNCTION gfs_variable_source ##### -->
-<para>
-
-</para>
-
- at v: 
- at cell: 
- at Returns: 
-
-
 <!-- ##### FUNCTION gfs_variable_from_name ##### -->
 <para>
 
@@ -610,6 +601,38 @@ Defines the (second-order accurate) gradient of a variable @v in a given directi
 @Returns: 
 
 
+<!-- ##### STRUCT GfsInterpolator ##### -->
+<para>
+
+</para>
+
+ at w: 
+ at w: 
+
+<!-- ##### FUNCTION gfs_cell_corner_interpolator ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at d: 
+ at max_level: 
+ at centered: 
+ at inter: 
+
+
+<!-- ##### FUNCTION gfs_cell_corner_value ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at d: 
+ at v: 
+ at max_level: 
+ at Returns: 
+
+
 <!-- ##### FUNCTION gfs_cell_write ##### -->
 <para>
 
@@ -620,6 +643,16 @@ Defines the (second-order accurate) gradient of a variable @v in a given directi
 @variables: 
 
 
+<!-- ##### FUNCTION gfs_cell_write_binary ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at fp: 
+ at variables: 
+
+
 <!-- ##### FUNCTION gfs_cell_read ##### -->
 <para>
 
@@ -632,3 +665,13 @@ Defines the (second-order accurate) gradient of a variable @v in a given directi
 @variables: 
 
 
+<!-- ##### FUNCTION gfs_cell_read_binary ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at fp: 
+ at domain: 
+
+
diff --git a/doc/tmpl/ftt-basic.sgml b/doc/tmpl/ftt-basic.sgml
index ef13da5..4185175 100644
--- a/doc/tmpl/ftt-basic.sgml
+++ b/doc/tmpl/ftt-basic.sgml
@@ -275,6 +275,26 @@ Evaluates to the level of @c.
 @pos: 
 
 
+<!-- ##### FUNCTION ftt_corner_pos ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at d: 
+ at pos: 
+
+
+<!-- ##### FUNCTION ftt_corner_relative_pos ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at d: 
+ at pos: 
+
+
 <!-- ##### FUNCTION ftt_level_size ##### -->
 <para>
 
diff --git a/doc/tmpl/ftt-other.sgml b/doc/tmpl/ftt-other.sgml
index 29078c9..15b68c0 100644
--- a/doc/tmpl/ftt-other.sgml
+++ b/doc/tmpl/ftt-other.sgml
@@ -160,6 +160,18 @@ This functions is called by ftt_cell_traverse() for each of the visited cells.
 @data: 
 
 
+<!-- ##### FUNCTION ftt_cell_write_binary ##### -->
+<para>
+
+</para>
+
+ at root: 
+ at max_depth: 
+ at fp: 
+ at write: 
+ at data: 
+
+
 <!-- ##### USER_FUNCTION FttCellWriteFunc ##### -->
 <para>
 Writes in @fp any user data associated with @cell. It is important that this function does not output any newline caracter ('\n').
@@ -183,6 +195,17 @@ Writes in @fp any user data associated with @cell. It is important that this fun
 @line: 
 
 
+<!-- ##### FUNCTION ftt_cell_read_binary ##### -->
+<para>
+
+</para>
+
+ at fp: 
+ at read: 
+ at data: 
+ at Returns: 
+
+
 <!-- ##### USER_FUNCTION FttCellReadFunc ##### -->
 <para>
 Reads in any user data associated with @cell from file @fp and initializes the corresponding fields.
diff --git a/doc/tmpl/ftt-topology.sgml b/doc/tmpl/ftt-topology.sgml
index 4c25f6f..e020679 100644
--- a/doc/tmpl/ftt-topology.sgml
+++ b/doc/tmpl/ftt-topology.sgml
@@ -79,7 +79,7 @@ Evaluates to the child index of @c.
 
 @FTT_X: 
 @FTT_Y: 
- at FTT_XYZ: 
+ at FTT_XY: 
 
 <!-- ##### FUNCTION ftt_cell_children_direction ##### -->
 <para>
@@ -89,6 +89,7 @@ Evaluates to the child index of @c.
 @cell: 
 @d: 
 @children: 
+ at Returns: 
 
 
 <!-- ##### FUNCTION ftt_cell_child_corner ##### -->
@@ -170,3 +171,13 @@ Evaluates to the child index of @c.
 @init_data: 
 
 
+<!-- ##### FUNCTION ftt_cell_neighbor_is_brother ##### -->
+<para>
+
+</para>
+
+ at cell: 
+ at d: 
+ at Returns: 
+
+
diff --git a/doc/tmpl/gfs-unused.sgml b/doc/tmpl/gfs-unused.sgml
index 8f6ee44..33ae102 100644
--- a/doc/tmpl/gfs-unused.sgml
+++ b/doc/tmpl/gfs-unused.sgml
@@ -433,6 +433,16 @@ Evaluates to the index of the neighboring direction opposite to @i.
 @func: 
 @data: 
 
+<!-- ##### FUNCTION gfs_domain_variable_sources ##### -->
+<para>
+
+</para>
+
+ at domain: 
+ at v: 
+ at sv: 
+ at dt: 
+
 <!-- ##### FUNCTION gfs_draw_boundaries ##### -->
 <para>
 
@@ -595,6 +605,15 @@ Evaluates to the index of the neighboring direction opposite to @i.
 
 @v: 
 
+<!-- ##### FUNCTION gfs_variable_source ##### -->
+<para>
+
+</para>
+
+ at v: 
+ at cell: 
+ at Returns: 
+
 <!-- ##### FUNCTION gfs_velocity_sources ##### -->
 <para>
 
diff --git a/doc/tmpl/output.sgml b/doc/tmpl/output.sgml
index 25accea..f7974a2 100644
--- a/doc/tmpl/output.sgml
+++ b/doc/tmpl/output.sgml
@@ -102,6 +102,7 @@ which will convert the PPM stream generated by #GfsOutputPPM directly to MPEG us
 @format: 
 @formats: 
 @dynamic: 
+ at first_call: 
 
 <!-- ##### STRUCT GfsOutputFile ##### -->
 <para>
diff --git a/doc/tmpl/output_error_norm.sgml b/doc/tmpl/output_error_norm.sgml
index 4f0878c..ebc0f22 100644
--- a/doc/tmpl/output_error_norm.sgml
+++ b/doc/tmpl/output_error_norm.sgml
@@ -2,11 +2,42 @@
 Error norm output
 
 <!-- ##### SECTION Short_Description ##### -->
-
+Comparing fields with a reference solution
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-
+GfsOutputErrorNorm computes the norms of the difference between a given scalar field and a reference solution and outputs the resulting summary.
+</para>
+<para>
+The syntax in parameter files is as follows:
+<informalexample>
+<programlisting>
+[ #GfsOutputScalar ] { s = [ #GfsFunction ] unbiased = 1 v = Error }
+</programlisting>
+</informalexample>
+with
+<informaltable pgwide="1" frame="none" role="struct">
+<tgroup cols="2">
+<colspec colwidth="2*">
+<colspec colwidth="8*">
+<tbody>
+
+<row>
+<entry><structfield>s</structfield></entry>
+<entry>A #GfsFunction defining the reference solution.</entry>
+</row>
+
+<row>
+<entry><structfield>unbiased</structfield></entry>
+<entry>An optional parameter specifying if the bias between the reference solution and the computed solution should be removed prior to error computation. This is useful for fields which are defined up to an additive constant (pressure for example).</entry>
+</row>
+
+<row>
+<entry><structfield>v</structfield></entry>
+<entry>An optional parameter specifying a new variable used to store the error in each cell. The default is not to store the error.</entry>
+</row>
+
+</tbody></tgroup></informaltable>
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
diff --git a/doc/tmpl/output_location.sgml b/doc/tmpl/output_location.sgml
index 17d98d3..544c77e 100644
--- a/doc/tmpl/output_location.sgml
+++ b/doc/tmpl/output_location.sgml
@@ -2,11 +2,23 @@
 Location output
 
 <!-- ##### SECTION Short_Description ##### -->
-
+Writing the values of variables at a specified location
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-
+GfsOutputLocation writes the values of all permanent variables at a given location. The first time GfsOutputLocation is called it writes a comment describing the fields being written.
+</para>
+<para>
+The values are linearly interpolated to the given location using gfs_interpolate().
+</para>
+<para>
+The syntax in parameter files is as follows:
+<informalexample>
+<programlisting>
+[ #GfsOutput ] X Y Z
+</programlisting>
+</informalexample>
+where X, Y and Z are the coordinates of the location.
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
@@ -36,7 +48,6 @@ Location output
 </para>
 
 @p: 
- at first_call: 
 
 <!-- ##### FUNCTION gfs_output_location_class ##### -->
 <para>
diff --git a/doc/tmpl/output_scalar.sgml b/doc/tmpl/output_scalar.sgml
index fec5bfd..4ca6656 100644
--- a/doc/tmpl/output_scalar.sgml
+++ b/doc/tmpl/output_scalar.sgml
@@ -76,6 +76,7 @@ If neither max nor min are specified the bounding values are calculated before e
 @min: 
 @max: 
 @maxlevel: 
+ at box: 
 
 <!-- ##### FUNCTION gfs_output_scalar_class ##### -->
 <para>
diff --git a/doc/tmpl/output_simulation.sgml b/doc/tmpl/output_simulation.sgml
index 4228fe9..d8ebcf6 100644
--- a/doc/tmpl/output_simulation.sgml
+++ b/doc/tmpl/output_simulation.sgml
@@ -12,7 +12,7 @@ GfsOutputSimulation will write a description of the current state of the simulat
 The syntax in parameter files is as follows:
 <informalexample>
 <programlisting>
-[ #GfsOutput ] { depth = 5 variables = U,V,C }
+[ #GfsOutput ] { depth = 5 variables = U,V,C binary = 1 }
 </programlisting>
 </informalexample>
 with
@@ -32,6 +32,11 @@ with
 <entry>A comma-separated list of the names of the variables which will be written. The default is all the simulation permanent variables.</entry>
 </row>
 
+<row>
+<entry><structfield>binary</structfield></entry>
+<entry>An optional parameter specifying if a binary format should be used. Binary files allow faster reading of simulation files. The default is a more portable ASCII format.</entry>
+</row>
+
 </tbody></tgroup></informaltable>
 </para>
 
@@ -72,6 +77,7 @@ with
 @parent: 
 @max_depth: 
 @var: 
+ at binary: 
 
 <!-- ##### FUNCTION gfs_output_simulation_class ##### -->
 <para>
diff --git a/doc/tmpl/output_solid.sgml b/doc/tmpl/output_solid.sgml
index 9986e67..67c9c99 100644
--- a/doc/tmpl/output_solid.sgml
+++ b/doc/tmpl/output_solid.sgml
@@ -2,11 +2,19 @@
 Solid statistics output
 
 <!-- ##### SECTION Short_Description ##### -->
-
+Summary of embedded solid description
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-
+GfsOutputSolidStats writes a summary of the embedded solid description.
+</para>
+<para>
+The syntax in parameter files is as follows:
+<informalexample>
+<programlisting>
+[ #GfsOutput ]
+</programlisting>
+</informalexample>
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
diff --git a/doc/tmpl/output_solid_force.sgml b/doc/tmpl/output_solid_force.sgml
index 769ba56..739f11c 100644
--- a/doc/tmpl/output_solid_force.sgml
+++ b/doc/tmpl/output_solid_force.sgml
@@ -2,11 +2,19 @@
 Solid force output
 
 <!-- ##### SECTION Short_Description ##### -->
-
+Forces acting on the embedded solid boundary
 
 <!-- ##### SECTION Long_Description ##### -->
 <para>
-
+GfsOutputSolidForce will write the components of the total pressure and viscous forces acting on the embedded solid boundary. The first field is the time followed by the three components of the pressure force, followed by the three components of the viscous force.
+</para>
+<para>
+The syntax in parameter files is as follows:
+<informalexample>
+<programlisting>
+[ #GfsOutput ]
+</programlisting>
+</informalexample>
 </para>
 
 <!-- ##### SECTION See_Also ##### -->
diff --git a/doc/tmpl/poisson.sgml b/doc/tmpl/poisson.sgml
index fc3da18..d30bd03 100644
--- a/doc/tmpl/poisson.sgml
+++ b/doc/tmpl/poisson.sgml
@@ -23,6 +23,7 @@ Poisson solver
 @nrelax: 
 @minlevel: 
 @nitermax: 
+ at dimension: 
 @niter: 
 @residual_before: 
 @residual: 
@@ -59,6 +60,7 @@ Poisson solver
 </para>
 
 @domain: 
+ at d: 
 @max_depth: 
 @u: 
 @rhs: 
@@ -73,6 +75,7 @@ Poisson solver
 </para>
 
 @domain: 
+ at d: 
 @flags: 
 @max_depth: 
 @u: 
@@ -99,6 +102,7 @@ Poisson solver
 </para>
 
 @domain: 
+ at d: 
 @levelmin: 
 @depth: 
 @nrelax: 
@@ -111,6 +115,11 @@ Poisson solver
 
 </para>
 
+ at domain: 
+ at dimension: 
+ at p: 
+ at dt: 
+<!-- # Unused Parameters # -->
 @face: 
 @par: 
 
diff --git a/doc/tmpl/simulation.sgml b/doc/tmpl/simulation.sgml
index f366e01..7a6d8af 100644
--- a/doc/tmpl/simulation.sgml
+++ b/doc/tmpl/simulation.sgml
@@ -44,6 +44,7 @@ Simulations
 </para>
 
 @parent_class: 
+ at run: 
 
 <!-- ##### STRUCT GfsSimulation ##### -->
 <para>
@@ -57,8 +58,6 @@ Simulations
 @approx_projection_params: 
 @advection_params: 
 @diffusion_params: 
- at tracer_advection_params: 
- at tracer_diffusion_params: 
 @surface: 
 @stree: 
 @is_open: 
@@ -70,6 +69,7 @@ Simulations
 @adapts_stats: 
 @events: 
 @modules: 
+ at variables: 
 @tnext: 
 
 <!-- ##### STRUCT GfsTime ##### -->
@@ -83,6 +83,7 @@ Simulations
 @i: 
 @istart: 
 @iend: 
+ at dtmax: 
 
 <!-- ##### STRUCT GfsPhysicalParams ##### -->
 <para>
@@ -91,6 +92,7 @@ Simulations
 
 @rho: 
 @sigma: 
+ at g: 
 
 <!-- ##### FUNCTION gfs_init ##### -->
 <para>
@@ -123,9 +125,10 @@ Simulations
 
 </para>
 
- at sim: 
 @fp: 
 @Returns: 
+<!-- # Unused Parameters # -->
+ at sim: 
 
 
 <!-- ##### FUNCTION gfs_simulation_refine ##### -->
diff --git a/doc/tmpl/solid.sgml b/doc/tmpl/solid.sgml
index de50a20..bf31c1f 100644
--- a/doc/tmpl/solid.sgml
+++ b/doc/tmpl/solid.sgml
@@ -45,7 +45,6 @@ Contains the surface and volume fractions of the cell not contained in the solid
 
 @s: 
 @a: 
- at sa: 
 @v: 
 @fv: 
 @merged: 
@@ -113,6 +112,8 @@ Contains the surface and volume fractions of the cell not contained in the solid
 </para>
 
 @root: 
+ at order: 
+ at flags: 
 @func: 
 @data: 
 
diff --git a/doc/tutorial/.arch-inventory b/doc/tutorial/.arch-inventory
index 427f3e0..2685d3b 100644
--- a/doc/tutorial/.arch-inventory
+++ b/doc/tutorial/.arch-inventory
@@ -10,3 +10,9 @@ precious ^refined1\.pdf$
 precious ^refined1_cells\.pdf$
 precious ^refined2\.pdf$
 precious ^tutorial$
+precious ^tutorial1\..*$
+precious ^tutorial\.pdf$
+precious ^tutorial\.ps\.gz$
+precious ^tutorial\.tar\.gz$
+precious ^gfsview\.eps$
+precious ^vorticity\.eps$
diff --git a/doc/tutorial/Makefile.am b/doc/tutorial/Makefile.am
index dde276a..2414f85 100644
--- a/doc/tutorial/Makefile.am
+++ b/doc/tutorial/Makefile.am
@@ -3,6 +3,12 @@
 EXTRA_DIST=tutorial.ps.gz tutorial.pdf tutorial.tar.gz half-cylinder.gts \
 	gfs2D.net
 
+clean-generic:
+	$(RM) *.dvi *.aux *.log *.toc *.out \
+	boundaries.pdf direction.eps direction.pdf dxscreen.eps dxscreen.pdf \
+	gfs2oogl.pdf half-cylinder.eps half-cylinder.pdf refined1.pdf refined1_cells.pdf \
+	refined2.pdf vorticity.eps vorticity.pdf gfsview.eps tutorial1.tex
+
 tutorial.tar.gz: tutorial.ps.gz
 	rm -r -f tutorial
 	sed 's/input{pdf.tex}/usepackage{graphicx}\\newcommand{\\gfx}{eps}/g' < tutorial.tex | sed "s/GFS_VERSION/`$(top_srcdir)/src/gerris2D -V 2>&1 | awk '{ if ($$5 == "version") print $$6}'`/g" > tutorial1.tex
diff --git a/doc/tutorial/Makefile.deps b/doc/tutorial/Makefile.deps
index 232df91..45cdbcc 100644
--- a/doc/tutorial/Makefile.deps
+++ b/doc/tutorial/Makefile.deps
@@ -1 +1 @@
-tutorial1.dvi:  direction.eps vorticity.eps half-cylinder.eps boundaries.eps gfs2oogl.eps dxscreen.eps refined1.eps refined1_cells.eps refined2.eps
+tutorial1.dvi:  direction.eps vorticity.eps half-cylinder.eps boundaries.eps gfsview.eps gfs2oogl.eps dxscreen.eps refined1.eps refined1_cells.eps refined2.eps
diff --git a/doc/tutorial/gfsview.png b/doc/tutorial/gfsview.png
new file mode 100644
index 0000000..70c3818
Binary files /dev/null and b/doc/tutorial/gfsview.png differ
diff --git a/doc/tutorial/pre_fix.sh b/doc/tutorial/pre_fix.sh
index 53fc91e..cf3606e 100755
--- a/doc/tutorial/pre_fix.sh
+++ b/doc/tutorial/pre_fix.sh
@@ -20,16 +20,31 @@ awk 'BEGIN {
     RS = "\"";
 }
 {
-    if ($1 == "dx-screen")
-	tagfound = 1;
-    else if (tagfound && $1 == "HREF=")
-        hreffound = 1;
-    else if (hreffound) {
-	print "cp -f dxscreen.png tutorial/" $1;
-	system ("cp -f dxscreen.png tutorial/" $1);
-	exit (0);
+    if (dxscreendone == 0) {
+	    if ($1 == "dx-screen")
+		tagfound = 1;
+    	else if (tagfound && $1 == "HREF=")
+        	hreffound = 1;
+    	else if (hreffound) {
+		print "cp -f dxscreen.png tutorial/" $1;
+		system ("cp -f dxscreen.png tutorial/" $1);
+        	dxscreendone = 1;
+    	}
     }
+    if (gfsviewdone == 0) {
+    	if ($1 == "gfsview")
+		gfsvtagfound = 1;
+    	else if (gfsvtagfound && $1 == "HREF=")
+        	gfsvhreffound = 1;
+    	else if (gfsvhreffound) {
+		print "cp -f gfsview.png tutorial/" $1;
+		system ("cp -f gfsview.png tutorial/" $1);
+        	gfsviewdone = 1;
+    	}
+    }
+    if (gfsviewdone && dxscreendone)
+      	exit (0);
 }' < $file
 mv -f /tmp/`basename $file` $file
 done
-
+cp vorticity.png tutorial/img3.png
diff --git a/doc/tutorial/tutorial.tex b/doc/tutorial/tutorial.tex
index e64bda4..ed0b4d8 100644
--- a/doc/tutorial/tutorial.tex
+++ b/doc/tutorial/tutorial.tex
@@ -1,5 +1,7 @@
 \documentclass[a4paper]{article}
 \usepackage{html}
+\usepackage{color}
+\pagecolor{white}
 \input{pdf.tex}
 
 \oddsidemargin=4mm
@@ -60,6 +62,10 @@ already installed on your system. To be sure try this:
 \begin{verbatim}
 % glib-config --version
 \end{verbatim}
+or this
+\begin{verbatim}
+% pkg-config glib-2.0 --modversion
+\end{verbatim}
 If you get a result, you have the Glib library on your system,
 otherwise you will need to install it following the instructions on
 the Glib web site.
@@ -143,7 +149,7 @@ their own directory. Type this at your shell prompt:
 % cd vorticity
 \end{verbatim}
 As a starting point we will use the following simulation file: {\tt
-vorticity.sim}
+vorticity.gfs}
 \begin{verbatim}
 1 2 GfsSimulation GfsBox GfsGEdge {} {
   GfsTime { end = 0 }
@@ -155,7 +161,7 @@ GfsBox {}
 This is a valid simulation file but it does not do much as you can see 
 by typing
 \begin{verbatim}
-% gerris2D vorticity.sim
+% gerris2D vorticity.gfs
 \end{verbatim}
 It is a good starting point however to explain the general structure
 of a simulation file.
@@ -171,7 +177,7 @@ parameter = value
 \end{verbatim}
 where {\tt parameter} is an unique identifier (within this braced
 block). All the other parameters are compulsory parameters.
-For example, in {\tt vorticity.sim} both
+For example, in {\tt vorticity.gfs} both
 \begin{verbatim}
   GfsTime { end = 0 }
 \end{verbatim}
@@ -189,7 +195,7 @@ optional arguments of the form
 \begin{verbatim}
 parameter = value
 \end{verbatim}
-For example, in {\tt vorticity.sim} the following blocks of text are
+For example, in {\tt vorticity.gfs} the following blocks of text are
 all objects:
 \begin{itemize}
 \item
@@ -215,7 +221,7 @@ GfsBox {}
 1 1 top
 \end{verbatim}
 \end{itemize}
-Following this rule, {\tt vorticty.sim} could have been written
+Following this rule, {\tt vorticty.gfs} could have been written
 equivalently as:
 \begin{verbatim}
 1 2 GfsSimulation GfsBox GfsGEdge {} { GfsTime {
@@ -354,7 +360,7 @@ uses dynamically linked {\em modules} which can be loaded at
 runtime. We will see later how to write your own modules. 
 
 For the moment, we will use the default {\tt GfsInit} object. Just add
-the following lines to {\tt vorticity.sim}:
+the following lines to {\tt vorticity.gfs}:
 \begin{verbatim}
 1 2 GfsSimulation GfsBox GfsGEdge {} {
   GfsTime { end = 50 }
@@ -389,7 +395,7 @@ Using this feature, it is possible to define most initial conditions directly in
 
 \subsubsection{Writing results}
 
-The {\tt vorticity.sim} file we have now is all Gerris needs to run the
+The {\tt vorticity.gfs} file we have now is all Gerris needs to run the
 simulation. However, for this run to be any use, we need to specify
 how and when to output the results. This is done by using another
 class of objects: {\tt GfsOutput}, derived from {\tt GfsEvent}. Gerris
@@ -471,7 +477,7 @@ outputs statistics about the projection part of the algorithm.
 
 You can now run the code like this:
 \begin{verbatim}
-% gerris2D vorticity.sim
+% gerris2D vorticity.gfs
 \end{verbatim}
 and you should get an output in your console looking like this (you
 can stop the program using {\tt Ctrl-C}):
@@ -690,7 +696,7 @@ GfsBoundaryInflowConstant} object and the whole right side of the last
 (rightmost) box a {\tt GfsBoundaryOutflow} object. Again, boundary
 conditions objects are all derived from the {\tt GfsBoundary} object
 and, as initial conditions, new objects can be easily written by the
-user.
+user (see also section \ref{morebc}).
 
 We see that {\tt GfsBoundaryInflowConstant} takes one argument which is
 the value of the (constant) normal velocity applied to this
@@ -819,7 +825,7 @@ field.
 
 We can now run the code:
 \begin{verbatim}
-% gerris2D half-cylinder.sim
+% gerris2D half-cylinder.gfs
 \end{verbatim}
 It is going to take a while to complete, but remember that you can
 look at files while they are being generated. The first file which
@@ -863,7 +869,7 @@ simulation at regular intervals for latter post-processing?
 You can do this using the {\tt GfsOutputSimulation} object. Like this
 for example:
 \begin{verbatim}
-GfsOutputSimulation { step = 0.1 } half-cylinder-%3.1f.sim {
+GfsOutputSimulation { step = 0.1 } half-cylinder-%3.1f.gfs {
   variables = U,V,P
 }
 \end{verbatim}
@@ -872,7 +878,7 @@ default all the variables are saved.
 
 If you now re-run the simulation, you will get a new file every 0.1
 time units. This file is a valid simulation file (like {\tt
-half-cylinder.sim}) and you can use it directly to restart the
+half-cylinder.gfs}) and you can use it directly to restart the
 simulation from this point onward. If you edit it, you will see that
 the general structure is the same as usual but for five pretty big
 chunks of data. 
@@ -891,7 +897,72 @@ associated physical data, solid boundary definitions etc...
 You can of course edit this file, add new outputs and so on and
 restart the simulation from where you left it.
 
-\subsection{Some post-processing using {\tt gfs2oogl}}
+\subsection{Visualisation}
+
+Several tools can be used to visualise Gerris simulation files, either
+the standalone GfsView which interfaces directly with Gerris or
+external viewers such as geomview, openDX or MayaVi.
+
+\subsubsection{GfsView}
+
+GfsView is a tool written specifically to visualise Gerris simulation
+files. It is still young but fully usable both for 2D and 3D
+simulations. Its main advantage over other options and the reason for
+its existence is that it makes full use of the adaptive nature of the
+octree representation at the visualisation level. The octree structure
+is used within GfsView to dynamically select the appropriate level of
+refinement depending on the viewpoint, zoom and rendering speed. It is
+also used to efficiently compute complex geometrical entities such as
+isosurfaces or cut-planes.
+
+The more classical viewers such as openDX or MayaVi are designed for
+either regular Cartesian grids or fully-unstructured meshes and do not
+take advantage of the octree representation (worse still, the octree
+representation first needs to be converted to Cartesian or
+fully-unstructured meshes before being imported into these programs).
+
+To install GfsView, you need to have the
+\htmladdnormallinkfoot{Gtk+}{http://www.gtk.org} toolkit installed on
+your system. If you are running a Linux machine, Gtk+ is most probably
+already installed. You will also need the
+\htmladdnormallinkfoot{GtkGlExt}{http://gtkglext.sourceforge.net/}
+OpenGL extension to Gtk+.
+
+If you then download a recent version of GfsView from the Gerris web
+site and do the now classical:
+\begin{verbatim}
+% gunzip gfsview.tar.gz
+% tar xvf gfsview.tar
+% cd gfsview
+% ./configure --prefix=/home/joe/local
+% make
+% make install
+\end{verbatim}
+you will be able to start GfsView using:
+\begin{verbatim}
+% gfsview2D half-cylinder-0.5.gfs
+\end{verbatim}
+Clicking on ``Linear'', ``Vectors'' and ``Solid'' in the toolbar and
+changing the vector length by editing the properties of the
+``Vectors'' object (select the object then choose
+``Edit$\rightarrow$Properties'') you should be able to get something
+looking like figure \ref{gfsview}. You can pan by dragging the right
+mouse button, zoom by dragging the middle button and rotate by
+dragging the left button.
+\begin{figure}[htbp]
+\begin{center}
+\htmlimage{scale=2.0,external,thumbnail=1}
+\includegraphics[width=\hsize]{gfsview.\gfx}
+\end{center}
+\caption{Screenshot of a GfsView session.}
+\label{gfsview}
+\end{figure}
+
+While by no means complete, you can already do many things with
+GfsView. I hope it is fairly user-friendly so just play with it and
+discover for yourself.
+
+\subsubsection{Some post-processing using {\tt gfs2oogl}}
 
 Gerris comes with a utility called {\tt gfs2oogl} which converts
 simulation files to various representations in {\sc OOGL} format. We are
@@ -906,19 +977,19 @@ gfs2oogl} by typing:
 By default {\tt gfs2oogl} will generate the same output as {\tt
 GfsOutputBoundaries} like this:
 \begin{verbatim}
-% gfs2oogl2D < half-cylinder-0.1.sim > boundaries.oogl
+% gfs2oogl2D < half-cylinder-0.1.gfs > boundaries.oogl
 \end{verbatim}
 To generate an {\sc OOGL} representation of a scalar field (a coloured square
 for each discretisation cell) do this:
 \begin{verbatim}
-% gfs2oogl2D -S -z 0 -c Vorticity < half-cylinder-0.5.sim > squares.oogl
+% gfs2oogl2D -S -z 0 -c Vorticity < half-cylinder-0.5.gfs > squares.oogl
 \end{verbatim}
 which tells {\tt gfs2oogl} to do a cross-section for $z = 0$ ({\tt -z
 0}) represented by squares ({\tt -S}) and colored according to the local
 vorticity ({\tt -c Vorticity}).
 To generate a vector field representing the velocity try:
 \begin{verbatim}
-% gfs2oogl2D -V 2 -z 0 < half-cylinder-0.5.sim > vectors.oogl
+% gfs2oogl2D -V 2 -z 0 < half-cylinder-0.5.gfs > vectors.oogl
 \end{verbatim}
 where {\tt -V 2} specifies that the maximum length of the vector is
 twice the dimension of the smallest cell in the domain.
@@ -935,7 +1006,7 @@ gfs2oogl}.}
 \label{gfs2oogl}
 \end{figure}
 
-\subsection{Visualisation with OpenDX}
+\subsubsection{Visualisation with OpenDX}
 
 If you have \htmladdnormallinkfoot{OpenDX}{http://www.opendx.org}
 installed on your system, the installation process described above
@@ -978,7 +1049,7 @@ as a starting point. Typing
 \begin{verbatim}
 % dx -mdf /home/joe/local/lib/gerris/dx2D.mdf -program gfs2D.net
 \end{verbatim}
-in the directory containing your {\tt half-cylinder-0.5.sim} file (you
+in the directory containing your {\tt half-cylinder-0.5.gfs} file (you
 also need to add the path to {\tt gfs2D.net} if it is not contained in
 the same directory) and selecting the Execute$\rightarrow$Execute Once
 menu should bring up windows looking like figure \ref{dx-screen}.
@@ -1045,7 +1116,7 @@ Following this we can modify our simulation file:
   GfsTime { end = 9 }
   GfsRefine 7
   GtsSurfaceFile half-cylinder.gts
-  GfsInitFlowConstant {} { U = 1 }
+  GfsInit {} { U = 1 }
 #  GfsOutputBoundaries {} boundaries
   GfsAdaptVorticity { istep = 1 } { maxlevel = 7 cmax = 1e-2 }
   GfsOutputTime { step = 0.02 } stdout
@@ -1054,7 +1125,7 @@ Following this we can modify our simulation file:
   GfsOutputPPM { step = 0.02 } vorticity.ppm {
     min = -100 max = 100 v = Vorticity
   }
-  GfsOutputSimulation { step = 0.1 } half-cylinder-%3.1f.sim {
+  GfsOutputSimulation { step = 0.1 } half-cylinder-%3.1f.gfs {
     variables = U,V,P
   }
   GfsOutputTiming { start = end } stdout
@@ -1085,7 +1156,7 @@ We can now run this new simulation. If the previous simulation did not
 complete yet, don't be afraid to abort it ({\tt Ctrl-C}), this one is going to
 be better (and faster).
 \begin{verbatim}
-% gerris2D half-cylinder.sim
+% gerris2D half-cylinder.gfs
 \end{verbatim}
 If we now look at the balance summary written by {\tt
 GfsOutputBalance}, we see that initially ({\tt step: 0}) the total
@@ -1095,8 +1166,8 @@ constant resolution of $4\times 2^7\times 2^7=512\times 128$. At step
 computational speed. If we now look at the first simulation file we
 saved, using:
 \begin{verbatim}
-% gfs2oogl2D < half-cylinder-0.1.sim > boundaries
-% gfs2oogl2D -S -z 0 -c Vorticity < half-cylinder-0.1.sim > squares.oogl
+% gfs2oogl2D < half-cylinder-0.1.gfs > boundaries
+% gfs2oogl2D -S -z 0 -c Vorticity < half-cylinder-0.1.gfs > squares.oogl
 \end{verbatim}
 we obtain figure \ref{refined1} showing not only the domain boundaries 
 as usual, but also the boundaries (thin black lines) between different
@@ -1149,6 +1220,136 @@ properly installed on your system you can also try:
 which will produce a much smaller {\sc MPEG} video file, suitable for
 distribution through the network.
 
+\section{Going further}
+
+\subsection{More on boundary conditions}
+\label{morebc}
+
+Up to now we have only dealt with ``pre-packaged'' boundary conditions
+such as {\tt GfsBoundaryInflowConstant} and {\tt GfsBoundaryOutflow}.
+What if you need more specific boundary conditions?
+
+For most practical problems, boundary conditions can be reduced to two
+main categories: Dirichlet boundary conditions for which the value of
+the variable is set and Neumann boundary conditions for which the
+value of the derivative of the variable is set. As we have seen
+earlier, the default boundary condition in Gerris is Dirichlet (zero)
+for the normal components of the velocity and Neumann (zero) for all
+other variables.
+
+Let us say that we want to impose a Poiseuille (parabolic) profile
+rather than a constant inflow velocity for the half-cylinder problem
+i.e. we want a Dirichlet boundary condition on the normal component of
+the velocity ({\tt U}) with an imposed parabolic profile. This can
+easily be done in Gerris like this:
+\begin{verbatim}
+...
+GfsBox { left = GfsBoundary {
+                  GfsBcDirichlet U { return 1. - 4.*y*y; }
+                  GfsBcDirichlet V 0
+                }
+       }
+GfsBox {}
+GfsBox {}
+GfsBox { right = GfsBoundaryOutflow }
+...
+\end{verbatim}
+Similarly a Neumann boundary condition on variable {\tt X} would use
+{\tt GfsBcNeumann X ...}
+
+\subsection{Adding tracers}
+
+In the half cylinder example, it would be nice to be able to visualise
+the flow using for example a passive tracer injected at the inlet.
+This is very simple, just modify the {\tt half-cylinder.gfs} parameter
+file like this:
+\begin{verbatim}
+4 3 GfsSimulation GfsBox GfsGEdge {} {
+  GfsTime { end = 9 }
+  GfsRefine 7
+  GtsSurfaceFile half-cylinder.gts
+  GfsVariableTracer T
+  ...
+  GfsOutputPPM { step = 0.02 } tracer.ppm {
+    min = 0 max = 1 v = T
+  }
+  GfsOutputSimulation { step = 0.1 } half-cylinder-%3.1f.gfs {
+    variables = U,V,P,T
+  }
+  ...
+}
+GfsBox { left = GfsBoundary {
+                  GfsBcDirichlet U 1
+                  GfsBcDirichlet V 0
+                  GfsBcDirichlet T { return y > 0. ? 1. : 0.; }
+                } 
+       }
+...
+\end{verbatim}
+which will inject tracer {\tt T} at the inlet only in the upper half
+of the channel.
+
+The adaptive refinement algorithm shoud also take your tracer into account. Try this
+\begin{verbatim}
+  ...
+  GfsAdaptVorticity { istep = 1 } { maxlevel = 7 cmax = 1e-2 }
+  GfsAdaptGradient { istep = 1 } { maxlevel = 7 cmax = 1e-2 } T
+  ...
+\end{verbatim}
+which will adapt using both the gradient of tracer {\tt T} and the vorticity.
+
+You can have any number of tracers you want, they are dynamically
+allocated.
+
+\subsection{Adding diffusion terms}
+
+Up to now, we have only considered inviscid, incompressible flows.
+Without going into the details, this type of problems require the
+solution of two main subproblems: solving a Poisson equation for the
+pressure and an advection equation for the momentum and tracers with
+the corresponding boundary conditions.
+
+Gerris can also solve a third class of subproblems: diffusion
+equations. Diffusion equations are similar to Poisson equations (they
+both involve Laplacian operators) and can be solved efficiently using
+the same multigrid solver we use for the pressure.
+
+In practice adding diffusion to a given tracer is as simple as adding:
+\begin{verbatim}
+  ...
+  GfsSourceDiffusion {} T 0.01
+  ...
+\end{verbatim}
+to the parameter file, where 0.01 is the value of the diffusion
+coefficient.
+
+\subsubsection{Boundary conditions for diffusion terms}
+
+What if we want to modify the tracer example above so that now the
+half-cylinder itself is a (diffusive) source of tracer rather than the
+inlet? We need to be able to impose this boundary condition on the
+embedded solid surface. On embedded solids, the default boundary
+conditions for the diffusion equation is Neumann (zero flux) for
+tracers and Dirichlet (no-slip) for the velocity components. To change
+that use
+\begin{verbatim}
+  ...
+  GfsVariableTracer T
+  GfsSourceDiffusion {} T 0.001
+  GfsSurfaceBc T Dirichlet 1
+  ...
+\end{verbatim}
+and change the inlet boundary condition back to
+\begin{verbatim}
+  ...
+  GfsBox { left = GfsBoundary {
+                  GfsBcDirichlet U 1
+                  GfsBcDirichlet V 0
+                } 
+       }
+  ...
+\end{verbatim}
+
 \section{Writing new objects}
 
 If you want to implement your own boundary conditions, initial
@@ -1503,10 +1704,10 @@ parameter $m$ we added. What if we do not specify the right parameter?
 Just try to replace {\tt InitPeriodic \{\} 2} with {\tt InitPeriodic
 \{\} a}. You should get a message like
 \begin{verbatim}
-gerris: file `periodic.sim' is not a valid simulation file
-periodic.sim:5:18: expecting a number (m)
+gerris: file `periodic.gfs' is not a valid simulation file
+periodic.gfs:5:18: expecting a number (m)
 \end{verbatim}
-which tells you where the error occurred (in file {\tt periodic.sim},
+which tells you where the error occurred (in file {\tt periodic.gfs},
 line 5, character 18) together with the error message which we
 specified in the {\tt read} method of our class.
 
@@ -1514,16 +1715,48 @@ specified in the {\tt read} method of our class.
 
 \subsection{Boundary conditions}
 
-\section{More on boundary conditions}
-
 \section{Running Gerris in parallel}
 
 \section{Running the test suite}
 
 \section{Learning more}
 
-While this tutorial should give you a good overview of Gerris, it is by no means a complete description. To learn more you should first consult the \htmladdnormallinkfoot{Gerris reference manual}{http://gfs.sf.net/reference/book1.html} which describes each object and the corresponding file parameters in more detail.
-
-If things are still unclear you can ask for help on the \htmladdnormallinkfoot{{\tt gfs-users} mailing list}{http://gfs.sf.net/mailinglists.html}. Please note that you first need to subscribe to the list to be able to post messages.
+While this tutorial should give you a good overview of Gerris, it is
+by no means a complete description. To learn more you should first
+consult the \htmladdnormallinkfoot{Gerris reference
+  manual}{http://gfs.sf.net/reference/book1.html} which describes each
+object and the corresponding file parameters in more detail.
+
+If things are still unclear you can ask for help on the
+\htmladdnormallinkfoot{{\tt gfs-users} mailing
+  list}{http://gfs.sf.net/mailinglists.html}. Please note that you
+first need to subscribe to the list to be able to post messages.
+
+\section{Do you want to help?}
+
+The idea behind Gerris and other free software projects is that
+transparency, free exchange of information and cooperation benefit
+individuals but also society as a whole. If you are a scientist, you
+know that these same principles are also keys to the efficiency of
+Science.
+
+Helping with Gerris development can be done in various ways and aside
+from giving you this altruistic, warm fuzzy feeling of helping others
+will also benefit you directly. A few concrete simple ways of helping
+are (in approximate order of difficulty):
+\begin{itemize}
+\item Use the code, comment on the problems you find, what you like, don't like about it.
+\item Share your results with other Gerris users, write a web page
+  about the problem you solved using Gerris etc\dots
+\item If you publish papers using Gerris, send me the reference. It is
+  very useful to be able to show evidence of wider usage when seeking
+  continued funding for the project.
+\item Also, if Gerris capabilities are central to your article feel
+  free to ask me to be a co-author on your paper\dots
+\item Have a look at the Gerris internals (write your own modules) and share them with us.
+\item Think of ways to extend Gerris for your own problems, implement
+  them and share them with us (you can count on my and other
+  developers' help).
+\end{itemize}
 
 \end{document}
diff --git a/doc/tutorial/vorticity.png b/doc/tutorial/vorticity.png
index b34075c..5304c64 100644
Binary files a/doc/tutorial/vorticity.png and b/doc/tutorial/vorticity.png differ
diff --git a/modules/Makefile.am b/modules/Makefile.am
index 1642438..45df629 100644
--- a/modules/Makefile.am
+++ b/modules/Makefile.am
@@ -9,7 +9,7 @@ pkglib_LTLIBRARIES = \
 	libtesting2D.la
 
 AM_CFLAGS = -DFTT_2D=1
-AM_LDFLAGS = -no-undefined -version-info 0:0:0 -export-dynamic
+AM_LDFLAGS = $(NO_UNDEFINED) -version-info 0:0:0 -export-dynamic
 
 EXTRA_DIST = \
 	periodic_flow.mod \
diff --git a/src/Makefile.am b/src/Makefile.am
index 59b766f..c11c0c4 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -105,18 +105,18 @@ SRC = \
 	ocean.c \
 	$(GFS_HDS)
 
-libgfs3D_la_LDFLAGS = -no-undefined\
+libgfs3D_la_LDFLAGS = $(NO_UNDEFINED)\
         -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)\
 	-release $(LT_RELEASE) -export-dynamic
 libgfs3D_la_SOURCES = $(SRC)
 
-libgfs2D_la_LDFLAGS = -no-undefined\
+libgfs2D_la_LDFLAGS = $(NO_UNDEFINED)\
         -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)\
 	-release $(LT_RELEASE) -export-dynamic
 libgfs2D_la_SOURCES = $(SRC)
 libgfs2D_la_CFLAGS = $(AM_CFLAGS) -DFTT_2D=1
 
-libgfs2D3_la_LDFLAGS = -no-undefined\
+libgfs2D3_la_LDFLAGS = $(NO_UNDEFINED)\
         -version-info $(LT_CURRENT):$(LT_REVISION):$(LT_AGE)\
 	-release $(LT_RELEASE) -export-dynamic
 libgfs2D3_la_SOURCES = $(SRC)
diff --git a/src/domain.c b/src/domain.c
index f551ec7..5ca50b2 100644
--- a/src/domain.c
+++ b/src/domain.c
@@ -2485,7 +2485,7 @@ static void remove_small_box (GfsBox * box, gpointer * data)
  * @data: user data to pass to @cleanup.
  *
  * Removes all the fluid "islands" of @domain smaller than @min cells
- * if @min is positive, or all the islands but the -$min largest ones
+ * if @min is positive, or all the islands but the - at min largest ones
  * if @min is negative.
  */
 void gfs_domain_remove_islands (GfsDomain * domain, 
diff --git a/src/output.c b/src/output.c
index 9ca5773..7f1ffda 100644
--- a/src/output.c
+++ b/src/output.c
@@ -1795,8 +1795,7 @@ static void output_error_norm_destroy (GtsObject * o)
 {
   gts_object_destroy (GTS_OBJECT (GFS_OUTPUT_ERROR_NORM (o)->s));
 
-  (* GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class->destroy) 
-    (o);
+  (* GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class->destroy) (o);
 }
 
 static void output_error_norm_read (GtsObject ** o, GtsFile * fp)
@@ -1804,8 +1803,7 @@ static void output_error_norm_read (GtsObject ** o, GtsFile * fp)
   GfsOutputErrorNorm * n;
 
   if (GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class->read)
-    (* GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class->read) 
-      (o, fp);
+    (* GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class->read) (o, fp);
   if (fp->type == GTS_ERROR)
     return;
 
@@ -1921,7 +1919,8 @@ static void remove_bias (FttCell * cell, gpointer * data)
 static gboolean gfs_output_error_norm_event (GfsEvent * event, 
 					     GfsSimulation * sim)
 {
-  if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class)->event) (event, sim)) {
+  if ((* GFS_EVENT_CLASS (GTS_OBJECT_CLASS (gfs_output_error_norm_class ())->parent_class)->event)
+      (event, sim)) {
     GfsOutputScalar * output = GFS_OUTPUT_SCALAR (event);
     GfsVariable * v = GFS_OUTPUT_ERROR_NORM (event)->v;
     GfsNorm norm;
diff --git a/test/ocean/Makefile.am b/test/ocean/Makefile.am
index 7a9967a..a4e70c9 100644
--- a/test/ocean/Makefile.am
+++ b/test/ocean/Makefile.am
@@ -2,4 +2,4 @@
 
 TESTS = geo.sh waves.sh
 
-EXTRA_DIST = basin.gts
+EXTRA_DIST = $(TESTS) basin.gts
diff --git a/tools/gfs2oogl.c b/tools/gfs2oogl.c
index db25a0e..32a04b8 100644
--- a/tools/gfs2oogl.c
+++ b/tools/gfs2oogl.c
@@ -371,11 +371,11 @@ static gboolean advect (GfsDomain * domain,
   guint n = 10;
   gdouble h = ds/n;
   gboolean ad = TRUE;
+  GfsVariable * U = gfs_variable_from_name (domain->variables, "U"), * v;
 
   while (n-- > 0 && ad) {
-    for (c = 0; c < 2/*FTT_DIMENSION*/; c++) {
-      ((gdouble *) &u)[c] = 
-	direction*gfs_interpolate (cell, *p, GFS_VELOCITY_INDEX (c));
+    for (c = 0, v = U; c < 2/*FTT_DIMENSION*/; c++, v = v->next) {
+      ((gdouble *) &u)[c] = direction*gfs_interpolate (cell, *p, v);
       nu += ((gdouble *) &u)[c]*((gdouble *) &u)[c];
     }
     if (nu > 0.) {
@@ -386,9 +386,8 @@ static gboolean advect (GfsDomain * domain,
       cell = gfs_domain_locate (domain, ph, -1);
       if (cell != NULL) {
 	nu = 0.;
-	for (c = 0; c < 2/*FTT_DIMENSION*/; c++) {
-	  ((gdouble *) &u)[c] = 
-	    direction*gfs_interpolate (cell, ph, GFS_VELOCITY_INDEX (c));
+	for (c = 0, v = U; c < 2/*FTT_DIMENSION*/; c++, v = v->next) {
+	  ((gdouble *) &u)[c] = direction*gfs_interpolate (cell, ph, v);
 	  nu += ((gdouble *) &u)[c]*((gdouble *) &u)[c];
 	}
 	if (nu > 0.) {
@@ -1054,8 +1053,7 @@ int main (int argc, char * argv[])
       while (fscanf (profile, "%lf %lf %lf", &p.x, &p.y, &p.z) == 3) {
 	FttCell * cell = gfs_domain_locate (domain, p, -1);
 	if (cell)
-	  printf ("%g %g %g %g\n", p.x, p.y, p.z, 
-		  gfs_interpolate (cell, p, var->i));
+	  printf ("%g %g %g %g\n", p.x, p.y, p.z, gfs_interpolate (cell, p, var));
       }
     }
     else if (vector > 0.) {

-- 
Gerris Flow Solver



More information about the debian-science-commits mailing list