1 /*! \mainpage GRINS: General Reacting Incompressible Navier-Stokes
 
    3 <b>Version \version</b>, Build Date: \builddate
 
    5 Built by: \builduser on \buildhost
 
    8 \section overview Overview
 
   10 The GRINS code has been developed to serve as a test bed for 
 
   11 numerical methods, based on finite elements, for multiphysics problems
 
   12 involving various forms of incompressible flow.
 
   13 It is written in object-oriented C++ and leverages heavily the 
 
   14 C++ finite element library 
 
   15 <a href="http://libmesh.sourceforge.net">libMesh</a>. Although the majority of GRINS is
 
   16 contained in a library, example applications
 
   17 are included as well, including a generic solver.
 
   19 Thanks for your interest in GRINS. To aid in usage, this manual is
 
   20 further divided into the following subsections:
 
   23 <li> \subpage installation
 
   24 <li> \subpage inputFile
 
   25 <!-- <li> <a href="http://buildbot.ices.utexas.edu/docs/buildbot/hpct/build/docs/html/lcov/build/src/index.html">Buildbot Coverage</a> -->
 
   28 \section bugs Reporting Bugs
 
   30 Bugs in the code and errors or omissions in the documentation can be
 
   31 reported to pbauman@ices.utexas.edu.  Requests and contributions are
 
   32 welcome at the same e-mail address.  All bug reports should include:
 
   35 <li>the version number of GRINS (versioning information can
 
   36 be obtained by running the <B><code>version</code></B> binary located in the
 
   37 bin/ directory of a local GRINS installation),
 
   38 <li>the hardware and operating system,
 
   39 <li>the local compiler version number,
 
   40 <li>a description of the bug behavior, and ideally, 
 
   41 <li>a short program which reproduces the bug.
 
   44 \section licence License
 
   45 Copyright (C) 2010,2011 The PECOS Development Team
 
   48 \section acknowledgements Acknowledgments
 
   49 \copydoc Acknowledgments
 
   51 \section pecos-center More Information About PECOS
 
   56 /*! \page inputFile Example GRINS Input File
 
   58 This is an example input file for use with the generic solver
 
   60 Note that GRINS is using 
 
   61 the <a href="http://getpot.sourceforge.net/">GetPot</a> parsing tool
 
   62 shipped with <a href="http://libmesh.sourceforge.net">libMesh</a>.  Note
 
   63 that the default comment delimiter is defined as the \# sign and
 
   64 comments can begin at the beginning of a line or after a variable
 
   65 declaration to aid in documenting the input file.  The parsing
 
   66 mechansism is keyword driven and can be organized into multiple
 
   67 sections.  Consequently, you are allowed to have variables of the same
 
   68 name so long as they are within unique section definitions.  Note also
 
   69 that because the parsing mechanism is keyword driven, the input
 
   70 directives can be specified in \e arbitrary order.  There is no
 
   71 requirement to maintain a specific variable declaration pattern.
 
   79 /*! \page installation Installation/Linkage
 
   81 GRINS uses the GNU autotools suite (autoconf, automake, and libtool)
 
   82 for its development build system.  This system is popular among the
 
   83 Linux development community and provides a familiar build environment
 
   86 To build GRINS starting from a release distribution, untar the distribution and
 
   87 enter the top-level directory.
 
   89 <div class="fragment"><pre class="fragment">
 
   90  > tar xvfz grins-$(VERSION).tar.gz
 
   91  > cd grins-$(VERSION)/            
 
   94 <h2>Configuration Requirements</h2>
 
   96 GRINS requires that the <a href="http://libmesh.sourceforge.net">libMesh</a>
 
   97 be available locally, along with the <a href="http://libmesh.sourceforge.net">libMesh</a>
 
   98 dependencies. Note that GRINS has been developed and tested on revision 4887 of 
 
   99 trunk. If <a href="http://libmesh.sourceforge.net">libMesh</a> is installed and available
 
  100 within your default login environment, then GRINS should automatically configure
 
  101 against the available installation.  If, however, your <a href="http://libmesh.sourceforge.net">libMesh</a>
 
  102 installation is in a non-standard location, use
 
  103 the <tt>--with-libmesh</tt> option to specify the location.
 
  105 To date, GRINS has been successfully built and tested with the gcc 4.4, 4.5, and 4.6 compilers
 
  106 and the Intel 11.1 compilers.
 
  108 <b>Installation Directory</b>: Use the <tt>--prefix</tt> option to
 
  109 specify your desired top-level installation directory for GRINS.  The
 
  110 examples below all configure GRINS to be installed in the user's ~/bin/grins
 
  113 <em>Configure with libMesh from default login environment:</em> <br>
 
  115 \code > ./configure --prefix=$HOME/bin/grins \endcode
 
  117 <em>Or, configure with libMesh from a specific directory:</em>        <br>
 
  119 \code > ./configure --prefix=$HOME/bin/grins --with-libmesh=$MY_LIBMESH_DIR \endcode
 
  121 <em>Or, configure with specific compilers:</em>        <br>
 
  123 \code > ./configure CXX=g++ --prefix=$HOME/bin/grins \endcode
 
  125 <h2> Other Configuration Options </h2>
 
  127 GRINS can optionally be built with other libraries as well. In particular, GRINS leverages the 
 
  128 <a href="https://red.ices.utexas.edu/projects/software/wiki/GRVY">GRVY</a> library for
 
  129 some performance timing capabilities. 
 
  131 <em>Configure with libGRVY and enable grvy timers :</em> <br>
 
  133 \code > ./configure --with-grvy=$MY_GRVY_DIR --enable-grvy-timers \endcode
 
  135 To enable verification using the method of manufactured solutions, GRINS uses
 
  136 the <a href="https://red.ices.utexas.edu/projects/software/wiki/MASA">MASA</a> 
 
  137 library. Although GRINS can configure and build with 
 
  138 <a href="https://red.ices.utexas.edu/projects/software/wiki/MASA">MASA</a>, it is currently not
 
  139 using these capabilities. This is planned for the next release.
 
  141 <em>Configure with MASA:</em> <br>
 
  143 \code > ./configure --with-masa=$MY_MASA_DIR \endcode
 
  145 Configure help can also be accessed at the command line:
 
  147 \code> ./configure --help \endcode
 
  149 <h2> Library Build </h2>
 
  151 Once configured, issue a <tt>make</tt> to build the software. If successful, this
 
  152 will build GRINS (static and dynamic libraries and executables).
 
  154 \code > make \endcode
 
  156 If you have multiple cores at your disposal, a parallel buid can accelerate
 
  157 the build time. If there are 4 cores avaiable, then the following will build
 
  158 using 4 threads, thereby leveraging 4 processors.
 
  160 \code > make -j 4\endcode
 
  162 <b> Verifying the build:</b> To verify that the software is working
 
  163 properly, a test option is provided to run a short suite of
 
  164 functionality tests against the local build.  To run, issue a <tt>make
 
  165 check</tt> to run the tests. Note that these tests may take a few minutes
 
  166 depending upon optimization level and architecture.  
 
  167 If successfull, output similar to the
 
  168 following will be generated.
 
  172 -------------------------------------------------------
 
  173  Initializing Incompressible Navier-Stokes tests.
 
  174 -------------------------------------------------------
 
  175 PASS: navier_stokes_tests.sh
 
  176 PASS: test_ns_couette_flow_2d_x.sh
 
  177 PASS: test_ns_couette_flow_2d_y.sh
 
  178 PASS: test_ns_poiseuille_flow.sh
 
  179 PASS: test_axi_ns_poiseuille_flow.sh
 
  180 PASS: test_axi_ns_con_cyl_flow.sh
 
  181 -------------------------------------------------------
 
  182       Initializing Thermally Driven Flow tests.
 
  183 -------------------------------------------------------
 
  184 PASS: thermally_driven_flow_tests.sh
 
  185 PASS: test_thermally_driven_2d_flow.sh
 
  186 PASS: test_axi_thermally_driven_flow.sh
 
  187 PASS: test_thermally_driven_3d_flow.sh
 
  188 -------------------------------------------------------
 
  189  Finalizing all regression tests. Don't worry be happy.
 
  190 -------------------------------------------------------
 
  197 <h2> Installation </h2>
 
  199 After the build is complete, issue a <tt>make install</tt> to install
 
  200 GRINS. This will install the header files, libraries, executables,
 
  202 The installation will consist of four top-level
 
  203 directories housing the library, include files, executables, and
 
  204 example files.  An example of the top-level directories after
 
  205 installation is shown below:
 
  207 \code > make install \endcode
 
  209 Top-level GRINS installation directory:
 
  212  > ls $HOME/bin/grins/
 
  213  bin  examples  include  lib
 
  216 <h2>Library Linkage</h2>
 
  218 Although a generic solver is shipped with the code, you may wish to
 
  219 write your own application code. To link an external application with the library, the
 
  220 \c include directory must be added to the compilers include search
 
  221 path in order to access the necessary header files.  The \c lib directory should also be added
 
  222 to the linker search path along with a request to link against the
 
  223 GRINS library.  Several example link steps are provided below.  These
 
  224 examples assume that the GRINS library has been successfully built and
 
  225 installed previously in the users's ~/bin/grins directory:
 
  227 \code > $(CXX) -I$HOME/bin/grins/include app.c -L$HOME/bin/grins/lib -lgrins \endcode
 
  229 To embed the dynamic library search path for the GRINS library
 
  230 directly into the application executable, use an additional linker
 
  233 \code > $(CXX) -I$HOME/bin/grins/include app.c -L$HOME/bin/grins/lib \
 
  234          -Wl,-rpath,$HOME/bin/grins/lib -lgrins \endcode