MOON (Multiphysics Object-Oriented Nek5000) uses the [MOOSE](http://www.mooseframework.org/) framework to implement multiphysics coupling with [Nek5000](https://nek5000.mcs.anl.gov/) CFD simulations. The project is a collaboration between [Idaho National Laboratory](https://www.inl.gov/) and [Argonne National Laboratory](https://www.inl.gov/).
Giraffe uses the [MOOSE](http://www.mooseframework.org/) framework to implement multiphysics coupling with [Nek5000](https://nek5000.mcs.anl.gov/) CFD simulations. The project is a collaboration between [Idaho National Laboratory](https://www.inl.gov/) and [Argonne National Laboratory](https://www.inl.gov/).
Downloading the Repo
--------------------
Cloning the MOON repository requires the `--recursive` flag, since MOOSE and libmesh are included as [Git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules). For example:
Cloning the Giraffe repository requires the `--recursive` flag, since MOOSE and libmesh are included as [Git submodules](https://git-scm.com/book/en/v2/Git-Tools-Submodules). For example:
This will download and populate the src/moose and src/moose/libmesh.
Building PETSc
--------------
MOON requires PETSc, as described in the [MOOSE installation instructions](http://mooseframework.com/getting-started/). PETSc is not distributed with MOON. PETSc must either be compiled from source or installed as part of the MOOSE Environment package. After installing PETSc, you must define the `$PETSC_DIR` variable in your environment.
Giraffe requires PETSc, as described in the [MOOSE installation instructions](http://mooseframework.com/getting-started/). PETSc is not distributed with Giraffe. PETSc must either be compiled from source or installed as part of the MOOSE Environment package. After installing PETSc, you must define the `$PETSC_DIR` variable in your environment.
Building libmesh
----------------
MOON also requires libmesh, as described in the [MOOSE installation instructions](http://mooseframework.com/getting-started/). The libmesh source code is distributed with MOOSE. It should be compiled using the following scripts:
Giraffe also requires libmesh, as described in the [MOOSE installation instructions](http://mooseframework.com/getting-started/). The libmesh source code is distributed with MOOSE. It should be compiled using the following scripts:
```
$ cd moose/
$ scripts/update\_and\_rebuild\_libmesh.sh.
...
...
@@ -34,18 +34,18 @@ After installing libmesh, you must define the `$LIBMESH_DIR` in your environment
The Example Problems
--------------------
Currently, the only working example problem is "integration_example" in `moon/examples/integration_example`.
Currently, the only working example problem is "integration_example" in `giraffe/examples/integration_example`.
### Building Example Problems
To configure and build each example problem, first generate the `configure` script in the top-level MOON directory:
To configure and build each example problem, first generate the `configure` script in the top-level Giraffe directory:
```
$ cd moon
$ cd giraffe
$ ./bootstrap
```
Then cd into the example subdirectory and simply run `configure` && `make`. This will build the MOOSE and Nek5000 libraries, then link them to the executable driver.
```
$ cd moon/examples/integration_example`
$ cd giraffe/examples/integration_example`
$ ../../configure
$ make
```
...
...
@@ -53,24 +53,24 @@ The `configure` script may be run with additional options (for example, to point
### Running Example Problems
To run an example problem, it is recommended to use the convenience script `moon/examples/build_coupled_nek`. This script will automatically setup some input files needed by Nek5000 (such as SESSION.NAME). The script takes one command-line argument for the MOOSE configuration file, `-i <config_file>.i`.
To run an example problem, it is recommended to use the convenience script `giraffe/examples/build_coupled_nek`. This script will automatically setup some input files needed by Nek5000 (such as SESSION.NAME). The script takes one command-line argument for the MOOSE configuration file, `-i <config_file>.i`.
```
$ cd moon/examples/integration_example
$ ../../moon-opt -i coefficient_integration.i
$ cd giraffe/examples/integration_example
$ ../../giraffe-opt -i coefficient_integration.i
```
Linking to libmoon
Linking to libgiraffe
------------------
The MOON libraries are output to the top-level lib/ directory.
The Giraffe libraries are output to the top-level lib/ directory.
Developing Nek5000 in MOON
Developing Nek5000 in Giraffe
--------------------------
Developers may freely modify src/Nek5000 as if it were a normal part of the MOON repo. This is because Nek5000 is included as a Git subtree (rather than a submodule). For routine commits, pushes, and pulls to the MOON repository, no extra Git commands are necessary.
Developers may freely modify src/Nek5000 as if it were a normal part of the Giraffe repo. This is because Nek5000 is included as a Git subtree (rather than a submodule). For routine commits, pushes, and pulls to the Giraffe repository, no extra Git commands are necessary.
With some additional Git commands, developers may easily merge upstream changes from [https://github.com/Nek5000/Nek5000](https://github.com/Nek5000/Nek5000) into src/Nek5000. Finally, developers may also request to merge changes from src/Nek5000 to [https://github.com/Nek5000/Nek5000](https://github.com/Nek5000/Nek5000). This [blog post](http://blogs.atlassian.com/2013/05/alternatives-to-git-submodule-git-subtree/) from Atlassian gives a brief rundown of the procedures.
Developing MOOSE and libmesh in MOON
Developing MOOSE and libmesh in Giraffe
------------------------------------
Modifying src/moose and src/moose/libmesh require additional Git commands, since they are included as Git submodules (rather than subtrees). Modifying either of these libraries for MOON is intended to be unnecessary. Should the situation arise, this [chapter](https://git-scm.com/book/en/v2/Git-Tools-Submodules) from _Pro Git_ describes the procedure for making modifications to submodules.
Modifying src/moose and src/moose/libmesh require additional Git commands, since they are included as Git submodules (rather than subtrees). Modifying either of these libraries for Giraffe is intended to be unnecessary. Should the situation arise, this [chapter](https://git-scm.com/book/en/v2/Git-Tools-Submodules) from _Pro Git_ describes the procedure for making modifications to submodules.