Skip to content

Commit

Permalink
merged
Browse files Browse the repository at this point in the history
  • Loading branch information
scopatz committed Apr 7, 2013
2 parents 579b0f5 + cccbd2e commit f23e4f9
Show file tree
Hide file tree
Showing 21 changed files with 289 additions and 388 deletions.
35 changes: 35 additions & 0 deletions LICENSE.rst
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@

*******
LICENSE
*******
::

Copyright (c) 2010-2012, University of Wisconsin Computational Nuclear Engineering Research Group
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the University of Wisconsin Computational
Nuclear Engineering Research Group nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.
240 changes: 127 additions & 113 deletions README.rst
Original file line number Diff line number Diff line change
@@ -1,127 +1,148 @@
_______________________________________________________________________
###################################################
Cycamore : The CYClus Additional MOdules REpository
_______________________________________________________________________

**Last Updated: 6.10.2012**
###################################################

Additional modules for the Cyclus nuclear fuel cycle simulator from the
University of Wisconsin - Madison are intended to be support innovative
fuel cycle simulations with the Cyclus fuel cycle simulator.

To see user and developer documentation for this code, please visit the `Cycamore Homepage`_.


-----------------------------------------------------------------------
LISCENSE
-----------------------------------------------------------------------

::
To see user and developer documentation for this code, please visit
the `Cycamore Homepage`_.

Copyright (c) 2010-2012, University of Wisconsin Computational Nuclear Engineering Research Group
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
- Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
- Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
- Neither the name of the University of Wisconsin Computational
Nuclear Engineering Research Group nor the names of its
contributors may be used to endorse or promote products derived
from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
POSSIBILITY OF SUCH DAMAGE.

------------------------------------------------------------------
********************************
Building and Installing Cycamore
------------------------------------------------------------------
********************************

The `Cyclus Homepage`_ and `Cycamore Homepage`_ have much more detailed guides and information.
This Readme is intended to be a quick reference for building and installing the
cyamore module libraries for the first time.

The Cycamore code requires the following software and libraries.
In order to facilitate future compatibility with multiple platforms,
Cycamore is built using `CMake`_. A full list of the Cycamore package
dependencies is show below:

==================== ==================
Package Minimum Version
==================== ==================
`Cyclus` 0.1
`CMake` 2.8
`boost` 1.34.1
`libxml2` 2
`sqlite3` 3.7.10
`libxml2` 2
`Cyclopts` 0.1
`Cyclus` 0.1
==================== ==================

~~~~~~~~~~~~~~~~~~~~~~~~~~~
Building Cycamore
~~~~~~~~~~~~~~~~~~~~~~~~~~~

In order to facilitate future compatibility with multiple platforms, Cycamore is
built using `Cmake <http://www.cmake.org>`_. This relies on CMake version
2.8 or higher and the CMakeLists.txt file in `src/`. It is
recommended that you use CMake to build the Cycamore libraries in a directory
external to the source code. Now, to use the cycamore modules within a cyclus
simulation, you must already have cyclus installed . Once that is done, build the
cycamore module libraries by the following steps::

.../cycamore/$ mkdir build
.../cycamore/$ cd build
.../cycamore/build$ cmake ../src -DCYCLUS_ROOT_DIR=<cyclus location>

You should see output like this::

...
...
>> -- Configuring done
>> -- Generating done
>> -- Build files have been written to: .../cycamore/build
/cycamore/build$ make cycamore
>> Scanning dependencies of target cycamore
...
...
>> [100%] Building CXX object CMakeFiles/cycamore.dir/SourceFac.cpp.o
>> Linking CXX executable cycamore
>> [100%] Built target cycamore

~~~~~~~~~~~~~~~~~~~~~~~~~~~
Installing Cycamore
~~~~~~~~~~~~~~~~~~~~~~~~~~~
As with all software, the build/install can be broken into two steps:

To allow cyclus to find the cycamore module libraries, you must install them within
the cyclus installation directory. To do so, execute ::
#. building and installing the dependencies
#. building and installing Cycamore

.../cycamore/build$ make
.../cycamore/build$ make install
Installing Dependencies
=======================

If the cyclus installation directory is in a system location, you will need to
execute `sudo make install` instead of `make install`.
The `Cyclus Homepage`_ has much more detailed guides and information. If
you intend to develop for *Cyclus*, please visit it to learn more.
This guide assumes that the user has root access (to issue sudo
commands) and access to a package manager or has some other suitable
method of automatically installing established libraries. This process
was tested using a fresh install of Ubuntu 12.10.

Cyclus
------

.. _`Cyclus Homepage`: http://cyclus.github.com
.. _`Cycamore Homepage`: http://cycamore.github.com
The Cyclus Library is the simulation-engine core of the more general
Cyclus package, of which Cycamore is a part. Detailed build/install
instructions are provided in the `Cyclus readme`_. We assume that the
user has successfully built and installed Cyclus (as well as Cyclopts
and CMake) for the following discussion.

All Others
----------

All other dependencies are common libraries available through package
managers. We provide an example using `apt-get`_. All required
commands will take the form of:

.. code-block:: bash
sudo apt-get install package
--------------------------------------------------------------------------
Where you will replace "package" with the correct package name. The
list of required package names are:

#. libboost-all-dev
#. libxml++2.6-dev

So, for example, in order to install libxml++ on your system, you will
type:

.. code-block:: bash
sudo apt-get install libxml++2.6-dev
Let us take a moment to note the Boost library dependency. As it
currently stands, we in fact depend on a small subset of the Boost
libraries:

#. libboost-filesystem-dev
#. libboost-system-dev

However, it is possible (likely) that additional Boost libraries will
be used because they are an industry standard. Accordingly, we suggest
simply installing libboost-all-dev to limit any headaches due to
possible dependency additions in the future.

Installing Cycamore
===================

Assuming you have the dependencies installed correctly, it's pretty
straightforward to install Cycamore. We make the following assumptions
in this guide:

#. there is some master directory in which you're placing all
Cyclus-related files called .../cyclus
#. you have a directory named .../cyclus/install in which you plan
to install all Cyclus-related files
#. you have acquired the Cycamore source code from the
`Cycamore repo`_
#. you have placed the Cycamore repository in .../cyclus/cycamore
#. you have a directory named .../cyclus/cycamore/build in which
you plan to encapsulate all build-related files (they get in the
way otherwise)
#. you have installed Cyclopts using the CMAKE_INSTALL_PREFIX
variable set to ../cyclus/install (see the `Cyclopts readme`_)
#. you have installed Cyclus using the CMAKE_INSTALL_PREFIX
variable set to ../cyclus/install (see the `Cyclus readme`_)

Under these assumptions **and** if you used a package manager to
install coin-Cbc (i.e. it's installed in a standard location), the
Cyclus building and installation process will look like:

.. code-block:: bash
.../cyclus/cycamore$ cd build
.../cyclus/cycamore/build$ cmake ../src -DCMAKE_INSTALL_PREFIX=../../install -DCYCLOPTS_ROOT_DIR=../../install -DCYCLUS_ROOT_DIR=../../install
.../cyclus/cycamore/build$ make && make install
If you have installed coin-Cbc from source or otherwise have it
installed in a non-standard location, you should make use of the CMake
COIN_ROOT_DIR variable. The otherwise identical process would look
like:

.. code-block:: bash
.../cyclus/cycamore$ cd build
.../cyclus/cycamore/build$ cmake ../src -DCMAKE_INSTALL_PREFIX=../../install -DCYCLOPTS_ROOT_DIR=../../install -DCYCLUS_ROOT_DIR=../../install -DCOIN_ROOT_DIR=/the/path/to/coin/install
.../cyclus/cycamore/build$ make && make install
.. _`CMake`: http://www.cmake.org
.. _`apt-get`: http://linux.die.net/man/8/apt-get
.. _`Cyclus Homepage`: http://cyclus.github.com
.. _`Cyclus repo`: https://github.com/cyclus/cyclus
.. _`Cyclus readme`: http://github.com/cyclus/cyclus
.. _`Cycamore Homepage`: http://cycamore.github.com
.. _`Cycamore repo`: https://github.com/cyclus/cycamore
.. _`Cycamore readme`: https://github.com/cyclus/cycamore
.. _`Cyclopts Homepage`: http://cyclopts.github.com
.. _`Cyclopts repo`: https://github.com/cyclus/cyclopts
.. _`Cyclopts readme`: https://github.com/cyclus/cyclopts

**********************
The Developer Workflow
--------------------------------------------------------------------------
**********************

*Note that "upstream" repository refers to the primary `cyclus/cycamore` repository.*

Expand All @@ -139,9 +160,8 @@ Code from the "develop" branch generally must pass even more rigorous checks
before being integrated into the "master" branch. Hotfixes would be a
possible exception to this.

~~~~~~~~~~~~~~~~~~~
Workflow Notes
~~~~~~~~~~~~~~~~~~~
==============

* Use a branching workflow similar to the one described at
http://progit.org/book/ch3-4.html.
Expand Down Expand Up @@ -237,10 +257,8 @@ Workflow Notes
git checkout develop
git merge --no-ff remote_name/branch_name -m "A message""


~~~~~~~~~~~~~~~~~~~
Cautions
~~~~~~~~~~~~~~~~~~~
========

* **NEVER** merge the "master" branch into the "develop"
branch. Changes should only flow *to* the "master" branch *from* the
Expand All @@ -261,14 +279,11 @@ Cautions

git pull [remote] [from-branch]


~~~~~~~~~~~~~~~~~~~
An Example
~~~~~~~~~~~~~~~~~~~

==========

Introduction
============
------------

As this type of workflow can be complicated to converts from SVN and very complicated
for brand new programmers, an example is provided.
Expand All @@ -281,13 +296,13 @@ three branches: "Master", "Develop", and "Work".


Acquiring Cycamore and Workflow
=============================
-------------------------------

We begin with a fork of the main ("upstream") Cycamore repository. After initially forking
the repo, we will have two branches in our fork: "Master" and "Develop".

Acquiring a Fork of the Cycamore Repository
-----------------------------------------
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

A fork is *your* copy of Cycamore. Github offers an excelent
`tutorial <http://help.github.com/fork-a-repo/>`_ on how to set one up. The rest of this
Expand All @@ -309,7 +324,7 @@ fork's branches up to date (i.e., "push" your changes before you leave), only yo
copies of your branches may be different when you next sit down at the other location.

Workflow: The Beginning
-----------------------
^^^^^^^^^^^^^^^^^^^^^^^

Now, for the workflow! This is by no means the only way to perform this type of workflow,
but I assume that you wish to handle conflicts as often as possible (so as to keep their total
Expand Down Expand Up @@ -338,8 +353,7 @@ We then follow the same process to update the work branch, except:
#. we want to incorporate any changes which may have been introduced in the develop branch update.

Workflow: The End
-----------------

^^^^^^^^^^^^^^^^^

As time passes, you make some changes to files, and you commit those changes (to your *local work
branch*). Eventually (hopefully) you come to a stopping point where you have finished your project
Expand Down
2 changes: 1 addition & 1 deletion input/enrichment/1_src_enr_rxtr_sink.xml
Original file line number Diff line number Diff line change
Expand Up @@ -91,7 +91,7 @@
<outrecipe>used_fuel_recipe</outrecipe>
</fuel_output>
<cyclelength>1</cyclelength>
<coreloading>2</coreloading>
<incoreloading>2</incoreloading>
<batchespercore>1</batchespercore>
<commodity_production>
<commodity>power</commodity>
Expand Down
Loading

0 comments on commit f23e4f9

Please sign in to comment.