Skip to content

Commit

Permalink
Merge pull request mfem#487 from mfem/docs-dev
Browse files Browse the repository at this point in the history
Improved documentation [docs-dev]
  • Loading branch information
v-dobrev committed May 29, 2018
2 parents ca14e80 + 0cdd280 commit 0715efb
Show file tree
Hide file tree
Showing 17 changed files with 403 additions and 109 deletions.
4 changes: 2 additions & 2 deletions CHANGELOG
Expand Up @@ -8,8 +8,8 @@
http://mfem.org


Version 3.3.3 (development)
===========================
Version 3.4, released on May 29, 2018
=====================================

More general and efficient mesh adaptivity
------------------------------------------
Expand Down
2 changes: 1 addition & 1 deletion CMakeLists.txt
Expand Up @@ -45,7 +45,7 @@ project(mfem NONE)
# Current version of MFEM, see also `makefile`.
# mfem_VERSION = (string)
# MFEM_VERSION = (int) [automatically derived from mfem_VERSION]
set(${PROJECT_NAME}_VERSION 3.3.3)
set(${PROJECT_NAME}_VERSION 3.4.0)

# Prohibit in-source build
if (${PROJECT_SOURCE_DIR} STREQUAL ${PROJECT_BINARY_DIR})
Expand Down
103 changes: 102 additions & 1 deletion CONTRIBUTING.md
@@ -1,3 +1,15 @@
<p align="center">
<a href="http://mfem.org/"><img alt="mfem" src="http://mfem.org/img/logo-300.png"></a>
</p>

<p align="center">
<a href="https://github.com/mfem/mfem/blob/master/COPYRIGHT"><img alt="License" src="https://img.shields.io/badge/License-LGPL--2.1-brightgreen.svg"></a>
<a href="https://travis-ci.org/mfem/mfem"><img alt="Build Status" src="https://travis-ci.org/mfem/mfem.svg?branch=master"></a>
<a href="https://ci.appveyor.com/project/mfem/mfem"><img alt="Build Status" src="https://ci.appveyor.com/api/projects/status/19non9sqm6msi2wy?svg=true"></a>
<a href="http://mfem.github.io/doxygen/html/index.html"><img alt="Doxygen" src="https://img.shields.io/badge/code-documented-brightgreen.svg"></a>
</p>


# How to Contribute

The MFEM team welcomes contributions at all levels: bugfixes; code
Expand All @@ -16,6 +28,7 @@ See the [Quick Summary](#quick-summary) section for the main highlights of our
GitHub workflow. For more details, consult the following sections and refer
back to them before issuing pull requests:

- [Code Overview](#code-overview)
- [GitHub Workflow](#github-workflow)
- [MFEM Organization](#mfem-organization)
- [New Feature Development](#new-feature-development)
Expand Down Expand Up @@ -53,6 +66,94 @@ Origin](#developers-certificate-of-origin-11) at the end of this file.*
- Don't hesitate to [contact us](#contact-information) if you have any questions.


### Code Overview

- The MFEM library uses object-orient design principles which reflect, in code,
the independent mathematical concepts of meshing, linear algebra and finite
element spaces and operators.

- The MFEM source code has the following structure:
```
.
├── config
│ └── cmake
│ └── modules
├── data
├── doc
│ └── web
│ └── examples
├── examples
│ ├── petsc
│ ├── pumi
│ └── sundials
├── fem
├── general
├── linalg
├── mesh
└── miniapps
├── common
├── electromagnetics
├── meshing
├── nurbs
├── performance
└── tools
```

- The main directories are `fem/`, `mesh/` and `linalg/` containing the C++
classes implementing the finite element, mesh and linear algebra concepts
respectively.

- The main mesh classes are:
+ [`Mesh`](http://mfem.github.io/doxygen/html/classmfem_1_1Mesh.html)
+ [`NCMesh`](http://mfem.github.io/doxygen/html/classmfem_1_1NCMesh.html)
+ [`Element`](http://mfem.github.io/doxygen/html/classmfem_1_1Element.html)
+ [`ElementTransformation`](http://mfem.github.io/doxygen/html/classmfem_1_1ElementTransformation.html)

- The main finite element classes are:
+ [`FiniteElement`](http://mfem.github.io/doxygen/html/classmfem_1_1FiniteElement.html)
+ [`FiniteElementCollection`](http://mfem.github.io/doxygen/html/classmfem_1_1FiniteElement.html)
+ [`FiniteElementSpace`](http://mfem.github.io/doxygen/html/classmfem_1_1FiniteElementSpace.html)
+ [`GridFunction`](http://mfem.github.io/doxygen/html/classmfem_1_1GridFunction.html)
+ [`BilinearFormIntegrator`](http://mfem.github.io/doxygen/html/classmfem_1_1BilinearFormIntegrator.html) and [`LinearFormIntegrator`](http://mfem.github.io/doxygen/html/classmfem_1_1LinearFormIntegrator.html)
+ [`LinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1LinearFormIntegrator.html), [`BilinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1BilinearForm.html) and [`MixedBilinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1MixedBilinearForm.html)

- The main linear algebra classes and sources are
+ [`Operator`](http://mfem.github.io/doxygen/html/classmfem_1_1Operator.html) and [`BilinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1BilinearForm.html)
+ [`Vector`](http://mfem.github.io/doxygen/html/classmfem_1_1BilinearForm.html) and [`LinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1LinearForm.html)
+ [`DenseMatrix`](http://mfem.github.io/doxygen/html/classmfem_1_1DenseMatrix.html) and [`SparseMatrix`](http://mfem.github.io/doxygen/html/classmfem_1_1SparseMatrix.html)
+ Sparse [smoothers](http://mfem.github.io/doxygen/html/sparsesmoothers_8hpp.html) and linear [solvers](http://mfem.github.io/doxygen/html/solvers_8hpp.html)

- Parallel MPI objects in MFEM inherit their serial counterparts, so a parallel
mesh for example is just a serial mesh on each task plus the information on
shared geometric entities between different tasks. The parallel source files
have a `p` prefix, e.g. `pmesh.cpp` vs. the serial `mesh.cpp`.

- The main parallel classes are
+ [`ParMesh`](http://mfem.github.io/doxygen/html/solvers_8hpp.html)
+ [`ParNCMesh`](http://mfem.github.io/doxygen/html/classmfem_1_1ParMesh.html)
+ [`ParFiniteElementSpace`](http://mfem.github.io/doxygen/html/classmfem_1_1ParFiniteElementSpace.html)
+ [`ParGridFunction`](http://mfem.github.io/doxygen/html/classmfem_1_1ParGridFunction.html)
+ [`ParBilinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1ParBilinearForm.html) and [`ParLinearForm`](http://mfem.github.io/doxygen/html/classmfem_1_1ParLinearForm.html)
+ [`HypreParMatrix`](http://mfem.github.io/doxygen/html/classmfem_1_1HypreParMatrix.html) and [`HypreParVector`](http://mfem.github.io/doxygen/html/classmfem_1_1HypreParVector.html)
+ [`HypreSolver`](http://mfem.github.io/doxygen/html/classmfem_1_1HypreSolver.html) and other [hypre classes](http://mfem.github.io/doxygen/html/hypre_8hpp.html)

- The `general/` directory contains C++ classes that serve as utilities for
communication, error handling, arrays, (Boolean) tables, timing, etc.

- The `config/` directory contains build-related files, both for the plain
Makefile and the CMake build options.

- The `doc/` directory contains configuration for the Doxygen code documentation
that can either be build locally, or browsed online at
http://mfem.github.io/doxygen/html/index.html.

- The `data/` directory contains a collection of small mesh files, that are used
in the simple example codes and more fully-featured mini applications in the
`examples/` and `miniapps/` directories.

- See also the [code overview](http://mfem.org/code-overview/) section on the
MFEM website.

## GitHub Workflow

The GitHub organization, https://github.com/mfem, is the main developer hub for
Expand Down Expand Up @@ -332,7 +433,7 @@ MFEM uses a `master`/`next`-branch workflow as described below:
- [ ] `CHANGELOG`
- [ ] `makefile`
- [ ] `CMakeLists.txt`
- [ ] `doc/CodeDocumentation.conf`
- [ ] `doc/CodeDocumentation.conf.in`
- [ ] (LLNL only) Make sure all `README.html` files in the source repo are up to date.
- [ ] Tag the repository:

Expand Down
5 changes: 4 additions & 1 deletion INSTALL
Expand Up @@ -28,10 +28,13 @@ without GNU make or CMake can be found at the end of this file.
In addition to the native build systems, MFEM packages are also available in the
following package managers:

- Spack, https://github.com/LLNL/spack
- Spack, https://github.com/spack/spack
- OpenHPC, http://openhpc.community
- Homebrew/Science, https://github.com/Homebrew/homebrew-science

We also recommend downloading and building the MFEM-based GLVis visualization
tool which can be used to visualize the meshes and solution in MFEM's examples
and miniapps. See http://glvis.org and http://mfem.org/building.

Quick start with GNU make
=========================
Expand Down
16 changes: 10 additions & 6 deletions README
Expand Up @@ -12,11 +12,15 @@ to enable the research and development of scalable finite element discretization
and solver algorithms through general finite element abstractions, accurate and
flexible visualization, and tight integration with the hypre library.

For building instructions, see the file INSTALL, or type "make help". Copyright
information and licensing restrictions can be found in the file COPYRIGHT.
* For building instructions, see the file INSTALL, or type "make help".

The best starting point for new users interested in MFEM's features is the
interactive documentation in examples/README.html.
* Copyright and licensing information can be found in the file COPYRIGHT.

* The best starting point for new users interested in MFEM's features is the
interactive documentation in examples/README.html.

* Developers interested in contributing to the library, should read the
instructions and documentation in the CONTRIBUTING.md file.

Conceptually, MFEM can be viewed as a finite element toolbox that provides the
building blocks for developing finite element algorithms in a manner similar to
Expand Down Expand Up @@ -56,8 +60,8 @@ time integrators, etc.
For examples of using MFEM, see the examples/ and miniapps/ directories, as well
as the OpenGL visualization tool GLVis which is available at http://glvis.org.

This project is released under the LGPL v2.1 license. See LICENSE file for full
details.
This project is released under the LGPL v2.1 license with static linking
exception. See files COPYRIGHT and LICENSE file for full details.

LLNL Release Number: LLNL-CODE-443211
DOI: 10.11578/dc.20171025.1248
2 changes: 1 addition & 1 deletion doc/CodeDocumentation.conf.in
Expand Up @@ -38,7 +38,7 @@ PROJECT_NAME = "MFEM"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = v3.3.3
PROJECT_NUMBER = v3.4

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
Binary file added doc/web/examples/ex19-domain.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/web/examples/ex19.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added doc/web/examples/maxwell.png
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
237 changes: 160 additions & 77 deletions examples/README.html

Large diffs are not rendered by default.

2 changes: 1 addition & 1 deletion examples/ex19.cpp
Expand Up @@ -50,7 +50,7 @@ using namespace mfem;
//
// and K^-1 is an approximation of the inverse of the displacement part of the
// Jacobian and S^-1 is an approximation of the inverse of the Schur
// complement S = B K^-1 B^T. The Schur complement is approximiated using
// complement S = B K^-1 B^T. The Schur complement is approximated using
// a mass matrix of the pressure variables.
class JacobianPreconditioner : public Solver
{
Expand Down
2 changes: 1 addition & 1 deletion examples/ex19p.cpp
Expand Up @@ -50,7 +50,7 @@ using namespace mfem;
//
// and K^-1 is an approximation of the inverse of the displacement part of the
// Jacobian and S^-1 is an approximation of the inverse of the Schur
// complement S = B K^-1 B^T. The Schur complement is approximiated using
// complement S = B K^-1 B^T. The Schur complement is approximated using
// a mass matrix of the pressure variables.
class JacobianPreconditioner : public Solver
{
Expand Down
2 changes: 1 addition & 1 deletion linalg/petsc.cpp
@@ -1,4 +1,4 @@
// Copyright (c) 2016, Lawrence Livermore National Security, LLC. Produced at
// Copyright (c) 2010, Lawrence Livermore National Security, LLC. Produced at
// the Lawrence Livermore National Laboratory. LLNL-CODE-443211. All Rights
// reserved. See file COPYRIGHT for details.
//
Expand Down
2 changes: 1 addition & 1 deletion linalg/petsc.hpp
@@ -1,4 +1,4 @@
// Copyright (c) 2016, Lawrence Livermore National Security, LLC. Produced at
// Copyright (c) 2010, Lawrence Livermore National Security, LLC. Produced at
// the Lawrence Livermore National Laboratory. LLNL-CODE-443211. All Rights
// reserved. See file COPYRIGHT for details.
//
Expand Down
10 changes: 5 additions & 5 deletions makefile
Expand Up @@ -10,7 +10,7 @@
# Software Foundation) version 2.1 dated February 1999.

# The current MFEM version as an integer, see also `CMakeLists.txt`.
MFEM_VERSION = 30303
MFEM_VERSION = 30400
MFEM_VERSION_STRING = $(shell printf "%06d" $(MFEM_VERSION) | \
sed -e 's/^0*\(.*.\)\(..\)\(..\)$$/\1.\2.\3/' -e 's/\.0/./g' -e 's/\.0$$//')

Expand All @@ -26,7 +26,7 @@ MFEM makefile targets:
make parallel
make debug
make pdebug
make check/test
make test/check
make install
make clean
make distclean
Expand Down Expand Up @@ -55,14 +55,14 @@ make debug
A shortcut to configure and build the serial debug version of the library.
make pdebug
A shortcut to configure and build the parallel debug version of the library.
make check
Quick-check the build by compiling and running Example 1/1p.
make test
Verify the build by checking the results from running all examples and miniapps.
make check
Quick-check the build by compiling and running Example 1/1p.
make install PREFIX=<dir>
Install the library and headers in <dir>/lib and <dir>/include.
make clean
Clean the library and object files, but keep configuration.
Clean the library and object files, but keep the configuration.
make distclean
In addition to "make clean", clean the configuration and remove the local
installation directory.
Expand Down
124 changes: 113 additions & 11 deletions miniapps/electromagnetics/README.html

Large diffs are not rendered by default.

1 change: 1 addition & 0 deletions miniapps/meshing/README.html
Expand Up @@ -327,6 +327,7 @@ <h2 id="mesh-formats">Mesh formats</h2>
<li>MFEM's <a href="http://mfem.org/mesh-formats/#mfem-mesh-v10">mesh v1.0 format</a> for <a href="http://mfem.org/mesh-formats/#straight-meshes">straight</a> meshes,</li>
<li>MFEM's <a href="http://mfem.org/mesh-formats/#curvilinear-and-more-general-meshes">mesh v1.0 format</a> for <a href="http://mfem.org/mesh-format-v1.x/">arbitrary high-order curvilinear</a> and more general meshes,</li>
<li>MFEM's <a href="http://mfem.org/mesh-formats/#mfem-mesh-v11">mesh v1.1 format</a>, which adds support for non-conforming (AMR) meshes,</li>
<li>MFEM's mesh v1.2 format, which adds support for parallel meshes,</li>
<li>MFEM's format for <a href="http://mfem.org/mesh-formats/#nurbs-meshes">NURBS</a> meshes,</li>
<li>The <a href="http://mfem.org/mesh-formats/#curvilinear-vtk-meshes">VTK</a> unstructured mesh format, for triangular, quadrilateral, tetrahedral and hexahedral meshes,</li>
<li>The <a href="http://gmsh.info/">Gmsh</a> ASCII and binary formats for 2D and 3D meshes.</li>
Expand Down

0 comments on commit 0715efb

Please sign in to comment.