Unicorn 0.1.3-hpc


Unicorn an attempt to unify continuum mechanics models and solvers in
the FEniCS ( 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.


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.1)
    * ffc (0.5.1)
    * dolfin (0.8.2-hpc)
    * BLAS with a working c-interface (cblas, sunperf, atlas, gsl)

Source code structure:

Unicorn is divided into two parts: a library (exists under src/) and
example solvers (exists under ucsolver/), which uses the library to
solve the equations of continuum mechanics using G2. There currently
exists only one variant of ucsolver for the hpc branch (icns -
Incompressible Navier-Stokes)

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 Bazaar system in a public repository:


To build and install Unicorn, follow these steps:

1. ./configure 
2. make (Compile without running any tests) 
3. make check (Compile and run pre-installation tests, can be omitted)
4. make install 


The test corresponds to turbulent flow around a cube described in the
chapter "Turbulent Flow and Fluid-Structure Interaction" and section
"High Re turbulent flow" in the book "Automated Scientific Computing".

To verify correct installation and functionality of Unicorn, follow
these steps:

1. source (Configure and setup environment variables)
2. make install (Compile and install)
3. cd ucsolver/icns/cube
4. make
5. mpirun -np 8 ./cube -p parameters -m mesh.xml 1> log1 2> log2 &
(increase or decrease "8" to match the number of cores in your system)

When the simulation runs it will create output files in the directory
iter_0 (and subsequently iter_1, iter_2, etc.) corresponding to
iteration 0 of the adaptive mesh refinement iteration.

If the simulation runs and creates files in iter_0, Unicorn is
functioning correctly.

To reproduce the drag computation for the cube geometry given in
section "High Re turbulent flow", let the iteration run, producing
several iter_x directories. Inside these directories, a file
"aero_f.dat" is generated. The output quantity in "aero_f.dat" is a
time series of the drag force F (second column). The drag coefficient
is Cd = 2F/0.2^2. The mean value (of the time series) of the drag
coefficient is what is plotted in figure 1, and should converge to the
reference value Cd ~ 1.25 +- 5% as given in figure 1 and in
section "High Re turbulent flow".


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