Background:

Unicorn (http://www.fenics.org/wiki/Unicorn) an attempt to unify
continuum mechanics models and solvers in the FEniCS (www.fenics.org)
project. We define a fundamental model for conservation laws (mass,
momentum, energy) which is fixed and then allow additional
constitutive models for stress-strain relations. The total model is
then solved using the G2 (General Galerkin) method which is based on
FEM and duality-based adaptivity.

Dependencies:

Unicorn is part of a chain of components in FEniCS like so:

FIAT - UFC - FFC - DOLFIN - Unicorn

The package dependencies of Unicorn are:

    * ufc (1.0)
    * fiat (snapshot-2008-01-21)
    * ffc (snapshot-2008-01-21)
    * dolfin (snapshot-2008-01-21)
    * PETSc (2.3.3-p7)
    * scons

Documentation:

The Unicorn documentation exists under doc/, and currently consists of
Mercurial commit history and references to scientific papers.

Installation:

Unicorn uses the SCons build system for configuration, building
libraries, programs and installation.

SCons replaces make and configure. A typical build with SCons is:

    * scons
    * scons install 

SCons automatically finds dependencies. Parallel builds are executed by:

    * scons -j <num_processes> 

Build information for compiling against Unicorn are provided by the
pkg-config system, and is installed in the file unicorn.pc.

Unicorn provides a "scons.local" script for local installation (in the
build directory). A "local.conf" settings file is then used to point
the environment to the local installation. A typical local build is
thus performed as:

    * ./scons.local -j 2
    * source local.conf.bash

Or using "local.conf.tcsh" with the tcsh shell.

Source code structure:

Unicorn is divided into two parts: a library (exists under lib/) and a
solver (exists under ucsolver/), which uses the library to solve the
equations of continuum mechanics using G2. There currently exists some
variants of ucsolver (cns - Compressible Navier-Stokes, fsi - Fluid
Structure Interaction, icns - Incompressible Navier-Stokes, le -
Lagrange Elasticity) but they are in principle solving very similar
equations and are converging into one solver.

Under each variant of ucsolver there is one or a few benchmarks,
i.e. definitions of coefficients, boundary conditions and
mesh/domain. The dependency structure is very simple with the
benchmark depending on its parent directory and the Unicorn library.

There also exists test programs (under test/) which are used for
development purposes, i.e. for testing various parts of the library or
new ideas. These are not guaranteed to work but could be interesting
to study.

Development structure:

Unicorn is openly developed as Free Software. The source code is
version controlled in the Mercurial system in a public repository:

http://www.fenics.org/hg/unicorn

License:

Unicorn is distributed under the Lesser General Public License (LGPL):

http://www.fsf.org/licensing/licenses/lgpl.html
