== Introduction

This guide is based on the document <<OpenFoamUserGuide>> which accompanies
version 1.7.1 of the Open Source Field Operation and Manipulation (OpenFOAM(R))
by http://www.opencfd.co.uk[OpenCFD Ltd.] {cpp} libraries and has been adapted
for the use with {project}. It provides a description of the basic operation of
{project}, first through a set of tutorial exercises in <<chap_tutorials>> and
later by a more detailed description of the individual components that make up
{project}.

{project} is first and foremost a '{cpp} library', used primarily to create
executables, known as 'applications'. The applications fall into two
categories: 'solvers', that are each designed to solve a specific problem in
continuum mechanics; and 'utilities', that are designed to perform tasks that
involve data manipulation.  The {project} distribution contains numerous
solvers and utilities covering a wide range of problems, as described in
<<chap_foamApplications>>.

One of the strengths of {project} is that new solvers and utilities can be
created by its users with some pre-requisite knowledge of the underlying
method, physics and programming techniques involved.

{project} is supplied with pre- and post-processing environments. The interface
to the pre- and post-processing are themselves {project} utilities, thereby
ensuring consistent data handling across all environments. The overall
structure of {project} is shown in <<fig_FOAMoverview>>.

[[fig_FOAMoverview]]
.Overview of the {project} structure
image::images/intro_structure.png[]

The pre-processing and running of {project} cases is described in
<<chap_foamCases>>. In <<chap_meshGeneration>>, we cover both the generation of
meshes using the mesh generator supplied with {project} and conversion of
mesh data generated by third-party products.  Post-processing is described in
<<chap_postProcessing>>.
