/** 
 *  \page stk_mesh_banner Sierra Toolkit Mesh
 *
 *    \ref stk_mesh_module "Sierra Toolkit Mesh"
 *    <p>
 *      The Sierra Toolkit Mesh supports parallel distributed,
 *      heterogeneous, and dynamically modifiable unstructured meshes
 *      with computational field data.
 *    </p>
 *
 * \addtogroup stk_mesh_module 
 * \{
 *
 * \page stk_mesh_howto Mesh How To ...
 *
 *    Sierra Mesh
 *
 *    - \ref stk_mesh_example "Simple Mesh Example"<br>
 *
 * \page stk_mesh_documentation STK Mesh Documentation...
 *
 *    STK Mesh Documentation
 *
 *    Getting Started
 *    - \ref stk_mesh_first_steps "First Steps"<br>
 *    - \ref stk_mesh_tutorials_examples "Tutorials and Examples"<br>
 *    - \ref stk_mesh_demonstrations "Demonstrations"<br>
 *    - \ref stk_mesh_installation "Installation"<br>
 *
 *    API Reference
 *    - \ref stk_mesh_class_function_documentation "Class and Function Documentation"<br>
 *    - \ref stk_mesh_modules "Modules and Extensions to STK"<br>
 *    - \ref stk_mesh_tutorials_examples "Tutorials and Examples"<br>
 *    - \ref stk_mesh_how_to_best_practices "How-To's and Best Practices"<br>
 *    - \ref stk_mesh_vocabulary "Vocabulary"<br>
 *    - \ref stk_mesh_whats_new "What's New in STK"<br>
 *
 *    Working with STK (include development issues here?)
 *    - \ref stk_mesh_building "Building STK mesh"<br>
 *    - \ref stk_mesh_running "Running STK mesh"<br>
 *    - \ref stk_mesh_testing_and_debugging "Unit Testing and Debugging"<br>
 *
 *    Community and Resources
 *    - \ref stk_mesh_online_resources "Online Resources"<br>
 *    - \ref stk_mesh_faq "FAQ"<br>
 *    - \ref stk_mesh_developers "Developers"<br>
 *    - \ref stk_mesh_support_training_services "Support, Training and Services"<br>
 *
 *    Contributing
 *    - \ref stk_mesh_report_bugs_make_suggestions "Report Bugs and Make Suggestions"<br>
 *    - \ref stk_mesh_repository "Repository"<br>
 *    - \ref stk_mesh_credits "Credits"<br>
 *
 *    Licenses
 *    - \ref stk_mesh_license_for_STK "BSD"<br>
 *    - \ref stk_mesh_licenses_in_STK "Licenses Used in STK"<br>
 *
 * \page stk_mesh_first_steps First Steps
 *
 * \page stk_mesh_demonstrations Demonstrations
 *    - Internal Force Calculation (Use Case 14)
 *    - Gears Demonstration & video
 *
 * \page stk_mesh_installation Installation
 *    - Use the Trilinos cmake installation instructions to install stk_mesh.
 *
 * \page stk_mesh_class_function_documentation Class and Function Documentation
 *    This page includes information on the classes and functions in STK.
 *    This page also includes a description of the namespace conventions in STK.
 *    This page also includes a description of the global objects in STK.
 *
 * \page stk_mesh_modules Modules and Extensions to STK
 *    This page explains the various STK modules and extension points in STK.
 *
 * \page stk_mesh_tutorials_examples Tutorials and Examples
 *   \ingroup stk_mesh_module
 *    - \ref stk_mesh_use_case_1 "Use Case 1"
 *
 * \page stk_mesh_how_to_best_practices How-To's and Best Practices
 *    - How-To's
 *      - How to create a fast-gather for nodal fields from an element?
 *      - How do I read from an exodus file?
 *      - How do I create a mesh by hand?
 *      - How do I create full topological adjacency entities in stk_mesh?
 *    - Design Decisions:
 *      - Why are parts used to determine bucket decomposition?
 *      - Why are attributes const?
 *      - Why is modified status propagated upward through relations?
 *      - Why can't we add parts after meta data is committed?
 *      - Why are attributes settable on meta data for parts, but you can only get them off of the parts?
 *      - etc.
 *    - Free Function Philosophy:
 *      - We endorse the use of free functions that provide the following benefits while outweighing the following disadvantages.
 *      - Benefits:
 *        - Provide extension without modification to the API in cooperation with the Open Closed Principle
 *        - Help encourage the Single Responsibility Principle and cohesion through a minimally defined API
 *      - Disadvantages:
 *        - Too many ways to do things
 *        - Too hard to find where the free functions are defined
 *        - Often belong in the user-space
 *
 * \page stk_mesh_vocabulary Vocabulary
 *    This page explains the vocabulary used in stk_mesh.
 *
 * \page stk_mesh_building Building STK mesh
 *   - Sierra (bake or bjam)
 *   - Trilinos (cmake)
 *
 * \page stk_mesh_running Running STK mesh
 *
 * \page stk_mesh_testing_and_debugging Unit Testing and Debugging
 *   <h2>To run unit tests</h2>
 *     - Build the stk_mesh product and look for the unit test (name/loc will depend on if you build Sierra-style or Trilinos-style).
 *     - You can run the exectuble in serial or in parallel with MPI
 *     - You can select specific unit-tests to run using the --gtest_filter flag
 *       - Example, to run all Entity unit tests: <utest-exe> -- --gtest_filter=UnitTestEntity.*
 *       - Example, to run a specific unit test: <utest-exe> -- --gtest_filter=UnitTestEntity.testEntityKey
 *
 *   <h2>To debug unit tests</h2>
 *     - A unit-test can fail for a number of reasons
 *       - One of the macro assertions has failed; gtest will print the name
of the failing unit test, line file and line number of the failing
check, and some details about the failing check.
 *       - An uncaught exception was raised; the exception will be printed
along with a stacktrace. Since Gtest prints test names as it starts
them, it should be obvious which test caused the problem.
 *       - The program crashed, probably due to a segfault. Since Gtest
prints test names as it starts them, it should be obvious which test
caused the problem.
 *
 *     - When debugging, it is usually best to only run the failing test (use gtest_filter to select the failing test)
 *
 *     - Serial debugging can be done in gdb or totalview
 *       - GDB
 *         - gdb <utest-exe>
 *           - % run -- --gtest_filter=<failing-test>
 *       - Totalview
 *         - mpirun -np 1 -tv <utest-exe> -- --gtest_filter=<failing-test>
 *
 *     - Parallel debugging should be done with totalview, but it is possible to do it with GDB as well
 *       - GDB
 *         - How to set this up is beyond the scope of this document. A good description can be found here: http://www.open-mpi.org/faq/?category=debugging
 *       - Totalview
 *         - mpirun -np <N> -tv <utest-exe> -- --gtest_filter=<failing-test>
 *         - To find where an exception is being generated, a common technique is to set a breakpoint at __cxa_throw
 *
 *     - Debugging memory problems can be done with valgrind
 *       - In serial: valgrind <utest-exe> -- --gtest_filter=<failing-test>
 *       - In parallel it is more difficult
 *         - If you have access to the sntools, you can use mpigrind:
 *           - mpigrind mpirun -np <N> <utest-exe> -- --gtest_filter=<failing_test>
 *         - Otherwise, you'll have to create a script that runs the test under valgrind and then run mpirun on that script.
 *
 *   <h2>Unit test development</h2>
 *     - Individual Unit Tests:
 *       - Test one part of functionality at a time and put each test in its own STKUNIT_UNIT_TEST macro.
 *       - Name each test with a descriptive name.
 *       - Aim for short and concise unit tests that each fit on a single page
 *       - Use descriptive names for variables
 *       - Name/label all magic-numbers including 0 and 1.
 *       - Aim for positive logic in testing, try to be obvious
 *       - If using a complex fixture, use ascii art to document the fixture
 *       - If the unit_test is complex, have a comment at the top of the unit test describing what you're testing and why
 *
 *     - General Notes:
 *       - Remember that these tests will be read 10x more than they're written (especially during refactoring)
 *       - Place code in namespace stk::unit_test
 *       - Use namespaces judiciously to improve readability ( Prefer: using stk::mesh::MetaData; over using namespace stk; and namespace stk { )
 *       - Avoid “unsigned” and use pre-defined typedefs instead (EntityRank, size_t, PartOrdinal, FieldOrdinal, etc…)
 *
 *     - STKUNIT macros for verifying results inside STKUNIT_UNIT_TEST macro:
 *       - STKUNIT_EXPECT_* vs. STKUNIT_ASSERT_*, the ASSERT will stop the unit test at this line on failure.
 *       - Boolean values: STKUNIT_ASSERT_[EQ, NE, LE, LT, GE, GT, TRUE, FALSE]
 *       - String values: STKUNIT_ASSERT_[STREQ, STRNE, STRCASEEQ, STRCASENE] (CASE means ignore case)
 *       - Exceptions: STKUNIT_ASSERT_[THROW, NO_THROW]
 *       - Floating point values: STKUNIT_ASSERT_[DOUBLE_EQ, NEAR]

 * <h2> Software Architecture </h2>
 *   - The site <a href=http://www.bredemeyer.com/index.html>Resources for Software Architects</a> has excellent <a href=http://www.bredemeyer.com/ArchitectingProcess/SWAActionGuideTOC.htm>free documentation</a>.
 *   - Domain Modeling expresses the requirements for software within a
conceptual model of the problem domain. Such a model spans the
software’s requirements, architectural design (the decomposition of
software into architectural components and relationships among those
components), and key concepts of the software design.
 *
 * <h1> Should I continue to copy verbatim out of the wiki?</h1>
 *
 * \page stk_mesh_online_resources Online Resources
 * 
 * \page stk_mesh_faq FAQ
 *    - How is Stk_mesh different from Moab?
 *    - How is Stk_mesh different from libMesh?
 *
 * \page stk_mesh_developers Developers
 *    - Sierra Tool-Kit Developers (in alphabetical order)
 *      - Dave Baur <dgbaur@sandia.gov>
 *      - Todd Coffey <tscoffe@sandia.gov>
 *      - Carter Edwards <hcedwar@sandia.gov>
 *      - Jim Foucar <jgfouca@sandia.gov>
 *      - Russell Hooper <rhoope@sandia.gov>
 *      - James Overfelt <jroverf@sandia.gov>
 *      - Greg Sjaardema <gdsjaar@sandia.gov>
 *      - Dan Sunderland <dsunder@sandia.gov>
 *      - Alan Williams <william@sandia.gov>
 *    - Sierra Tool-Kit Product Owner:
 *      - Mike Glass <mwglass@sandia.gov>
 *
 * \page stk_mesh_support_training_services Support, Training and Services
 *    - For support, contact the Sierra Tool-Kit user email list:  <stk-users@software.sandia.gov>
 *    - Our Tutorial and Training materials are currently under development
 *    - For Services, please contact our product owner:  Mike Glass <mwglass@sandia.gov>
 *
 * \page stk_mesh_report_bugs_make_suggestions Report Bugs and Make Suggestions
 *    - To report bugs or make suggestions, please send them to <stk-users@software.sandia.gov>
 *
 * \page stk_mesh_repository Repository
 *    - The Sierra Tool-Kit repository is located at software.sandia.gov
 *
 * \page stk_mesh_credits Credits
 *    - The following people have contributed to the Sierra Tool-Kit (in alphabetical order):
 *      - Roscoe Bartlett <rabartl@sandia.gov>
 *      - Dave Baur <dgbaur@sandia.gov>
 *      - Noel Belcourt <kbelco@sandia.gov>
 *      - Bill Cochran <cochranwk@ornl.gov>
 *      - Todd Coffey <tscoffe@sandia.gov>
 *      - Stefan Domino <spdomin@sandia.gov>
 *      - Carter Edwards <hcedwar@sandia.gov>
 *      - Jim Foucar <jgfouca@sandia.gov>
 *      - Mike Glass <mwglass@sandia.gov>
 *      - Russell Hooper <rhoope@sandia.gov>
 *      - Elijah Newren <enewren@sandia.gov>
 *      - James Overfelt <jroverf@sandia.gov>
 *      - Kendall Pierson <khpiers@sandia.gov>
 *      - Greg Sjaardema <gdsjaar@sandia.gov>
 *      - Dan Sunderland <dsunder@sandia.gov>
 *      - Alan Williams <william@sandia.gov>
 *
 * \page stk_mesh_license_for_STK BSD
 *    - The Sierra Tool-Kit is currently distributed with Trilinos under the BSD license.
 *
 * \page stk_mesh_use_case_1 Use Case 1
 *   \ingroup stk_mesh_module
 *    This is a hello world example for how to construct a stk mesh.
 *    \dontinclude UseCase_1.hpp
 *    First, these two headers need to be included:
 *    \skip doxygen tutorial start #includes
 *    \until end code snippet
 *    Then a simple class is created which contains MetaData and BulkData:
 *    \skip UseCase_1_Mesh
 *    \until };
 *    Second, we have the definition file with the bare minimum of includes:
 *    \dontinclude UseCase_1.cpp
 *    \skip doxygen tutorial start #includes
 *    \until end code snippet
 *    And here we have a small function which creates the vector of rank
 *    names for MetaData.
 *    \skip use_case_1_rank_names
 *    \until }
 *    And finally we have the constructor which sets up MetaData and BulkData
 *    in a very trivial way:
 *    \skip doxygen tutorial start source
 *    \until end code snippet
 * \} */
