About
Psurface is a C++ library that handles piecewise linear bijections between triangulated surfaces. These surfaces can be of arbitrary shape and need not even be manifolds.
There are two main uses for psurface. When doing adaptive finite element simulations on grids with parametrized boundaries, psurface can store the parametrization. Boundary parametrizations are practically mappings from the coarse grid boundary to the actual boundary, and if that actual boundary is a triangulated surface then psurface can handle it. This is implemented, for example, in the dune-grid module of Dune.
Secondly, when doing domain decomposition methods with nonconforming interfaces, you need to relate the two interface grids to each other. Psurface can do this for you, even if your interfaces do not match geometrically. Such is the case, e.g., in contact problems. This second functionality is also available for 1d surfaces in 2d space.
The easiest way to use psurface for domain decomposition is to get the dune-grid-glue module and use it to drive psurface.
Download
The latest release is 1.3.0. It brings you various changes and new features.
- The entire code is now contained in a namespace psurface. This will help to avoid name clashes.
- libpsurface now has an AutoTools build system! To install, unpack the
tarball and go
autoreconf -isf ./configure make make install
Thanks to Elias Pipping for this. - The TargetSurface.h header has moved into the psurface subdirectory.
- Fix linker problems involving the DirectionFunction class.
- Various minor bugfixes in the simplification and I/O code
Unfortunately, there are still a few known issues with this release.
- The projector code still contains two quadratic algorithms. These will be replaced shortly.
Please read the license information below.
Older Releases
For the dune-2.1-compatible branch of of dune-grid-glue you need the 1.2.0 release of psurface. If you want to work with the dune-2.0-compatible branch of dune-grid-glue you need the 1.1.6 release, released on 4.6.2010. The latest release of the 1.0 branch (1.0.4) is also still available. You may want to read the complete changelog.
Installation
- Unpack the downloaded archive.
- Go to the directory libpsurface-X.Y.Z/src
- If you have libamiramesh installed and you want to be able to read parametrized boundaries in AmiraMesh format edit the Makefile correspondingly. (Should be self-explanatory)
- Type 'make'
- That's all
Documentation
PSurface is described in the following article:
- O. Sander, "The PSurface Library", Matheon preprint 708, submitted to 'Computing and Visualization in Science'
If you want to use psurface together with the dune-grid and dune-grid-glue modules, though, you don't need to know anything about the internals of psurface.
A doxygen-generated code reference is coming soon.
License
The psurface library and headers are licensed under version 2 of the GNU General Public License (see below), with a special exception for linking and compiling against psurface, the so-called "runtime exception." The license is intended to be similiar to the GNU Lesser General Public License, which by itself isn't suitable for a template library.
The exact wording of the exception reads as follows:
As a special exception, you may use the psurface source files as part of a software library or application without restriction. Specifically, if other files instantiate templates or use macros or inline functions from one or more of the psurface source files, or you compile one or more of the psurface source files and link them with other files to produce an executable, this does not by itself cause the resulting executable to be covered by the GNU General Public License. This exception does not however invalidate any other reasons why the executable file might be covered by the GNU General Public License.
This licence clones the one of the libstc++ library. For further implications of this library please see their license page.
See the file included COPYING for full copying permissions.
Contact
Please contact the psurface developer Oliver Sander for bug reports.
Imprint
Please refer to the imprint of the scientific computing group.