diff --git a/Makefile b/Makefile index 3e51bdf7d..2406488be 100644 --- a/Makefile +++ b/Makefile @@ -2,9 +2,6 @@ # # The included file 'gh-project.mk' should define the following: # GH_SOURCE_DIR = top-level directory of all the ReST source files -# GH_SOURCE_BRANCH = repository branch that contains the source -# GH_PUBLISH_BRANCH = repository branch that contains the rendered HTML -# GH_UPSTREAM_REPO = repository that contains the rendered HTML include gh-project.mk # You can set these variables from the command line. @@ -12,8 +9,10 @@ SPHINXOPTS = SPHINXBUILD = sphinx-build PAPER = BUILDDIR = ./gh-build -GIT_BRANCH = main -GIT_FORK = cyclus +CYCLUS_GIT_BRANCH = main +CYCLUS_GIT_FORK = cyclus +CYCAMORE_GIT_BRANCH = main +CYCAMORE_GIT_FORK = cyclus # Internal variables. @@ -30,10 +29,7 @@ help: @echo "Please use \`make ' where is one of" @echo " gh-preview to build HTML in directory $BUILDDIR for testing" @echo " gh-revert to cleanup HTML build in directory $BUILDDIR after testing" - @echo " gh-publish to build final version and push from source branch to main branch" - @echo " gh-publish-only to push from source branch to main branch, assuming already built" @echo " docker-html to use docker to build HTML in directory $BUILDDIR for testing" - @echo " docker-gh-publish to use docker to build final version and push from source branch to main branch" @echo " serve build+serve html files using Python's SimpleHTTPServer" @echo " serve-only serve pre-built html files using Python's SimpleHTTPServer" @echo " dirhtml to make HTML files named index.html in directories" @@ -59,14 +55,14 @@ gh-clean gh-revert clean: -rm -rf $(BUILDDIR) gh-preview html: - wget -nv https://raw.githubusercontent.com/${GIT_FORK}/cyclus/${GIT_BRANCH}/INSTALL.rst -O source/user/CYCLUS_INSTALL.rst || \ - curl https://raw.githubusercontent.com/${GIT_FORK}/cyclus/${GIT_BRANCH}/INSTALL.rst -L -o source/user/CYCLUS_INSTALL.rst - wget -nv https://raw.githubusercontent.com/${GIT_FORK}/cyclus/${GIT_BRANCH}/DEPENDENCIES.rst -O source/user/DEPENDENCIES.rst || \ - curl https://raw.githubusercontent.com/${GIT_FORK}/cyclus/${GIT_BRANCH}/DEPENDENCIES.rst -L -o source/user/DEPENDENCIES.rst - wget -nv https://raw.githubusercontent.com/${GIT_FORK}/cycamore/${GIT_BRANCH}/INSTALL.rst -O source/user/CYCAMORE_INSTALL.rst || \ - curl https://raw.githubusercontent.com/${GIT_FORK}/cycamore/${GIT_BRANCH}/INSTALL.rst -L -o source/user/CYCAMORE_INSTALL.rst - wget -nv https://raw.githubusercontent.com/${GIT_FORK}/cycamore/${GIT_BRANCH}/DEPENDENCIES.rst -O source/user/CYCAMORE_DEPS.rst || \ - curl https://raw.githubusercontent.com/${GIT_FORK}/cycamore/${GIT_BRANCH}/DEPENDENCIES.rst -L -o source/user/CYCAMORE_DEPS.rst + wget -nv https://raw.githubusercontent.com/${CYCLUS_GIT_FORK}/cyclus/${CYCLUS_GIT_BRANCH}/INSTALL.rst -O source/user/CYCLUS_INSTALL.rst || \ + curl https://raw.githubusercontent.com/${CYCLUS_GIT_FORK}/cyclus/${CYCLUS_GIT_BRANCH}/INSTALL.rst -L -o source/user/CYCLUS_INSTALL.rst + wget -nv https://raw.githubusercontent.com/${CYCLUS_GIT_FORK}/cyclus/${CYCLUS_GIT_BRANCH}/DEPENDENCIES.rst -O source/user/DEPENDENCIES.rst || \ + curl https://raw.githubusercontent.com/${CYCLUS_GIT_FORK}/cyclus/${CYCLUS_GIT_BRANCH}/DEPENDENCIES.rst -L -o source/user/DEPENDENCIES.rst + wget -nv https://raw.githubusercontent.com/${CYCAMORE_GIT_FORK}/cycamore/${CYCAMORE_GIT_BRANCH}/INSTALL.rst -O source/user/CYCAMORE_INSTALL.rst || \ + curl https://raw.githubusercontent.com/${CYCAMORE_GIT_FORK}/cycamore/${CYCAMORE_GIT_BRANCH}/INSTALL.rst -L -o source/user/CYCAMORE_INSTALL.rst + wget -nv https://raw.githubusercontent.com/${CYCAMORE_GIT_FORK}/cycamore/${CYCAMORE_GIT_BRANCH}/DEPENDENCIES.rst -O source/user/CYCAMORE_DEPS.rst || \ + curl https://raw.githubusercontent.com/${CYCAMORE_GIT_FORK}/cycamore/${CYCAMORE_GIT_BRANCH}/DEPENDENCIES.rst -L -o source/user/CYCAMORE_DEPS.rst PYTHONDONTWRITEBYTECODE="TRUE" $(SPHINXBUILD) -b html $(ALLSPHINXOPTS) $(BUILDDIR) sed -i.bak 's/function top_offset([$$]node){ return [$$]node\[0\].getBoundingClientRect().top; }/function top_offset($$node){ return (typeof $$node[0] === "undefined") ? 0 : $$node[0].getBoundingClientRect().top; }/' ./gh-build/_static/cloud.js @@ -77,31 +73,9 @@ gh-preview html: @echo @echo "Build finished. The HTML pages are in $(BUILDDIR)." -gh-publish-only: - git fetch $(GH_UPSTREAM_REPO) - git checkout -B $(GH_PUBLISH_BRANCH) $(GH_UPSTREAM_REPO)/$(GH_PUBLISH_BRANCH) - git checkout $(GH_SOURCE_BRANCH) -- $(GH_SOURCE_DIR) - git reset HEAD - rsync -a $(BUILDDIR)/* . - rsync -a $(BUILDDIR)/.* . - git add -f `(cd $(BUILDDIR); find . -type f; cd ..)` - rm -rf $(GH_SOURCE_DIR) $(BUILDDIR) - git commit -m "Generated $(GH_PUBLISH_BRANCH) for `git log $(GH_SOURCE_BRANCH) -1 --pretty=short --abbrev-commit`" && git push --force $(GH_UPSTREAM_REPO) $(GH_PUBLISH_BRANCH) - git checkout $(GH_SOURCE_BRANCH) - -gh-publish: - make clean - make html - make gh-publish-only - docker-gh-preview docker-html: - docker build -f docker/fuelcycle.org-deps/Dockerfile -t fuelcycle.org-deps . - docker run -w /cyclus.github.com -v $(PWD):/cyclus.github.com fuelcycle.org-deps bash -c "make gh-preview && chmod -R 777 $(BUILDDIR)" - -docker-gh-publish: - make clean - make docker-html - make gh-publish-only + docker build -f docker/Dockerfile -t site-deps . + docker run -w /cyclus.github.com -v $(PWD):/cyclus.github.com site-deps bash -c "make gh-preview && chmod -R 777 $(BUILDDIR)" serve: html cd $(BUILDDIR) && python -m http.server diff --git a/README.rst b/README.rst index 3e4ba984e..191b281a8 100644 --- a/README.rst +++ b/README.rst @@ -3,9 +3,9 @@ Dependencies Building the Cyclus website requires: -1. `Sphinx`_ v1.1.2 or higher +1. `Sphinx`_ v7.2.6 or higher -2. `sphinxcontrib-bibtex`_ v0.3.0 or higher +2. `sphinxcontrib-bibtex`_ v2.6.2 or higher 3. `cyclus`_ @@ -13,7 +13,7 @@ Building the Cyclus website requires: 5. `cycamore `_ -6. `Cloud Sphinx Theme `_ +6. `Cloud Sphinx Theme `_ v1.10.1 or higher **NOTE:** The cloud package for Debian and Ubuntu is broken, so do not apt-get this. Please ``pip install cloud_sptheme``, ``easy_install cloud_sptheme``, or install from source instead. @@ -24,16 +24,9 @@ to fix a bug in the package. Modifying the Cyclus Website ============================ -A 2 branch system has been implemented to maintain a clean process of -rebuilding this site. - -1. The `source` branch contains the restructured text documents and -Sphinx configuration used to build the site. All direct editing of -files should be made in the `source` branch. - -2. The `main` branch contains the processed and published web -content that is derived by Sphinx from the `source` branch. These -files should not be editted directly. +The site is built and published via GitHub Actions. The default branch of this repository is `source` +which contains the restructured text documents and Sphinx configuration used to build the site. +All direct editing of files should be made in the `source` branch. The rest of this readme assumes that you have two remotes associated with cyclus.github.com. @@ -57,7 +50,7 @@ run:: There are docker targets in the makefile for doing everything related to the -site - building, previewing, and publishing. See the ``Docker`` section below +site - building, previewing, and testing. See the ``Docker`` section below for more details. Best practice workflow for contributing to site changes @@ -86,7 +79,7 @@ Best practice workflow for contributing to site changes browser. Or if you have docker installed, you can optionally use the docker preview target: - ``make gh-preview-docker`` + ``make docker-gh-preview`` to build the website inside a docker container with all the correct dependencies and configuration taken care of automagically. @@ -107,66 +100,22 @@ Best practice workflow for contributing to site changes 8. Issue a pull request by going to your branch on your fork of the repo and clicking the "Pull Request" button. -Best practice for managing a pull request ------------------------------------------- - -1. Synchronize your repository with the upstream repo:: - - git fetch upstream - git checkout main - git merge upstream/main - git checkout source - git merge upstream/source - -2. Checkout the `pull_request_branch` in the pull request submitter's repo:: - - git fetch https://github.com/[username]/cyclus.github.com pull_request_branch - git checkout -b pull_request_branch - -3. Test the changes by using the `gh-preview` target - - ``make gh-preview`` - - This will build a version of the site in the `gh-build` directory in - your branch, `pull_request_branch`. You can load it directly in a - local browser. +9. Every time you modify your pull request a workflow will be triggered that builds + the site with your changes and uploads the built site as an artifact. The specific workflow run + can be found by viewing the "Details" of the ``build-and-upload`` check within a PR, + and the ``github-pages`` artifact is listed in the "Summary". -4. If satisfied, merge the `pull_request_branch` into the `source` - branch:: +10. If the PR is merged into the ``source`` branch the website will be published to https://fuelcycle.org + automatically via GitHub Actions. - git checkout source - git merge pull_request_branch - -6. If there are no conflicts, push this to the repo - - ``git push upstream source`` - -7. Republish the pages with the `gh-publish` target. (**NOTE: for this step, - the upstream Cyclus repository *must* be called `upstream`**) - - ``make gh-publish`` Docker ------- -The ``make docker-...`` targets require the cyclus/fuelcycle.org-deps docker image +The ``make docker-...`` targets require the `ghcr.io/cyclus/cymetric_22.04_apt/cymetric` docker image which can be retrieved/updated by running:: - docker pull cyclus/fuelcycle.org-deps - -Occasionally (i.e. for a Cyclus release) the image will need to be updated. -This can be done by:: - - cd docker/fuelcycle.org-deps - - # update the image the fuelcycle.org image depends on - docker pull cyclus/cymetric - - # rebuild the image - docker build -t cyclus/fuelcycle.org-deps . - - # push the new image to docker-hub - docker push cyclus/fuelcycle.org-deps + docker pull ghcr.io/cyclus/cymetric_22.04_apt/cymetric:latest .. _Sphinx: http://sphinx-doc.org/ .. _sphinxcontrib-bibtex: http://sphinxcontrib-bibtex.readthedocs.org/en/latest/index.html diff --git a/docker/fuelcycle.org-deps/Dockerfile b/docker/Dockerfile similarity index 64% rename from docker/fuelcycle.org-deps/Dockerfile rename to docker/Dockerfile index ffacd3a4b..85352a876 100644 --- a/docker/fuelcycle.org-deps/Dockerfile +++ b/docker/Dockerfile @@ -1,7 +1,6 @@ - FROM ghcr.io/cyclus/cymetric_22.04_apt/cymetric:latest RUN apt-get update RUN apt-get install -y --force-yes wget python3-pip -RUN python -m pip install sphinx sphinxcontrib-bibtex cloud-sptheme +RUN python3 -m pip install sphinx sphinxcontrib-bibtex cloud-sptheme diff --git a/docker/README.rst b/docker/README.rst index 2df7da4c8..ed322ae0c 100644 --- a/docker/README.rst +++ b/docker/README.rst @@ -1,9 +1,6 @@ -``fuelcycle.org-deps`` contains a dockerfile with all dependencies for +This directory contains a dockerfile with all dependencies for building the website. This is used by the docker based build targets added to -the makefile. This image will need to be updated and repushed to docker hub -periodically when dependencies for the website need updating. Particularly, -this image will need to be rebuilt whenever there is a new release of -cyclus+cycamore+cymetric - otherwise new changes in those projects/repos won't -show up/work on the website. +the makefile. This image will automatically use the latest cymetric image from GHCR, +which is updated automatically via GitHub Actions on any changes to Cyclus, Cycamore, or Cymetric. diff --git a/gh-project.mk b/gh-project.mk index 8525ad49b..01631c8d0 100644 --- a/gh-project.mk +++ b/gh-project.mk @@ -2,17 +2,7 @@ # # GH_SOURCE_DIR = top-level directory of all the ReST source files GH_SOURCE_DIR = source -# GH_SOURCE_BRANCH = repository branch that contains the source -GH_SOURCE_BRANCH = source -# GH_PUBLISH_BRANCH = repository branch that contains the rendered HTML -GH_PUBLISH_BRANCH = main -# GH_UPSTREAM_REPO = repository that contains the rendered HTML -GH_UPSTREAM_REPO = upstream - # Example for a gh-pages project # # GH_SOURCE_DIR = doc-src -# GH_SOURCE_BRANCH = main -# GH_PUBLISH_BRANCH = gh-pages -# GH_UPSTREAM_REPO = upstream diff --git a/source/arche/dre.rst b/source/arche/dre.rst index b85c7d138..a4f9cd3fc 100644 --- a/source/arche/dre.rst +++ b/source/arche/dre.rst @@ -15,7 +15,7 @@ instance for each concrete ``Resource`` (i.e. ``Materials`` and ``Products``) of the kernel is aware. For example, there is an exchange for ``Material`` resources and another for ``Product`` resources. -The DRE is comprised of five phases which execure in series: +The DRE is comprised of five phases which execute in series: * :ref:`rfb` * :ref:`rrfb` @@ -110,10 +110,10 @@ be: def get_material_requests(self): request_qty = 10.0 # kg # Material Target A - recipe_a = self.context().get_recipe("recipeA") + recipe_a = self.context.get_recipe("recipeA") target_a = ts.Material.create_untracked(request_qty, recipe_a) # Material Target B - recipe_b = self.context().get_recipe("recipeB") + recipe_b = self.context.get_recipe("recipeB") target_b = ts.Material.create_untracked(request_qty, recipe_b) # commodity mapping to request target commods = {"FuelA": target_a, "FuelB": target_b} diff --git a/source/arche/toolkit.rst b/source/arche/toolkit.rst index 5194c28ec..27719d0ec 100644 --- a/source/arche/toolkit.rst +++ b/source/arche/toolkit.rst @@ -1,173 +1,116 @@ -.. _toolkit: - -The (Experimental) Cyclus Toolkit -================================= -Currently in an experimental state, the |cyclus| toolkit aims to provide -functionality relevant to a variety of :term:`archetypes ` that do -not belong strictly in the :term:`cyclus kernel`. - -ResourceBuff -++++++++++++ -.. warning:: - - ResourceBuff will soon be deprecated in favor of ``ResBuf``. - -The ``cyclus::toolkit::ResourceBuff`` (C++) or ``cyclus.typesystem.ResourceBuff`` (Python) -class provides provides a canonical -methodology for dealing with collections of ``Resources``. -:term:`Archetypes ` in both |cyclus| and Cycamore make use of this -class. ``ResourceBuffs`` are usually used as member variables of -archetypes. The |Cyclus| preprocessor (C++) or |Cyclus| agents (Python) have special -handling for ``ResourceBuff`` -as it can generate all needed code for proper persistence and intiialization -of the buffer. For this to work, you must annotate the buffer member variable -with a Cyclus pre-processor :ref:`pragma ` (C++) or have a -special ``ResourceBuffInv`` class attribute (Python) in one of the -following ways: - -**C++:** - -.. code-block:: c++ - - // Option 1: minimum required annotation - #pragma cyclus var {} - cyclus::toolkit::ResourceBuff mybuf; - - // Option 2: you can set a specify buffer capacity - #pragma cyclus var {'capacity': 245.6} - cyclus::toolkit::ResourceBuff mybuf; - - // Option 3: you can reference another annotated member variable's value - // as the capacity - #pragma cyclus var {} - double buf_cap; - #pragma cyclus var {'capacity': 'buf_cap'} - cyclus::toolkit::ResourceBuff mybuf; - -**Python:** - -.. code-block:: python - - from cyclus.agents import Facility - import cyclus.typesystem as ts - - class MyFacility(Facility): - # Option 1: minimum required class attribute - mybuf = ts.ResourceBuffInv() - - # Option 2: you can set a specify buffer capacity - mybuf = ts.ResourceBuffInv(capacity=245.6) - - # Option 3: you can reference another annotated member variable's value - # as the capacity - buf_cap = ts.Double() - mybuf = ts.ResourceBuffInv(capacity='buf_cap') - -You can read the `ResourceBuff API documentation -`_ for -more details on how to use the buffer. - -ResBuf -++++++++++++ -The ``cyclus::toolkit::ResBuf`` (C++) or ``cyclus.typesystem.ResBuf`` (Python) class -provides provides a canonical -methodology for dealing with collections of Resources. ``ResBufs`` -are usually used as member variables of archetypes. The Cyclus preprocessor -has special handling for ``ResBuf`` as it can generate all needed code -for proper persistence and intiialization of the buffer. For this to work, -you must annotate the buffer member variable with a Cyclus pre-processor -:ref:`pragma ` (C++) or set a class attribute (Python) -in one of the following ways: - -**C++:** - -.. code-block:: c++ - - // Option 1: minimum required annotation - #pragma cyclus var {} - cyclus::toolkit::ResBuf mybuf; - - // Option 2: you can set a specify buffer capacity - #pragma cyclus var {'capacity': 245.6} - cyclus::toolkit::ResBuf mybuf; - - // Option 3: you can reference another annotated member variable's value - // as the capacity - #pragma cyclus var {} - double buf_cap; - #pragma cyclus var {'capacity': 'buf_cap'} - cyclus::toolkit::ResBuf mybuf; - -**Python:** - -.. code-block:: python - - from cyclus.agents import Facility - import cyclus.typesystem as ts - - class MyFacility(Facility): - # Option 1: minimum required annotation - mybuf = ts.ResBufMaterialInv() - - # Option 2: you can set a specify buffer capacity - mybuf = ts.ResBufMaterialInv(capacity=245.6) - - # Option 3: you can reference another annotated member variable's value - # as the capacity - buf_cap = ts.Double() - mybuf = ts.ResBufMaterialInv(capacity='buf_cap') - -You can read the `ResBuf API documentation -`_ for -more details on how to use the buffer. - -MatQuery [C++] -++++++++++++++ -The ``cyclus::toolkit::MatQuery`` class provides some easy-to-use functions that -interrogate the ``cyclus::Material`` object. For example, one can query the mass -or number of moles of a given nuclide. - -Enrichment [C++] -++++++++++++++++ -A number of functions are provided in ``toolkit/enrichment.h`` that assist in -enrichment-related calculations. Some highlights include a representation of -uranium assays in ``cyclus::toolkit::Assays``, as well as functions to calculate -feed, tails, and SWU quantity requirements. - -Commodity Recipe Context [C++] -+++++++++++++++++++++++++++++++ -The ``cyclus::toolkit::CommodityRecipeContext`` class provides a mapping between -commodities and recipes that can be updated as a simulation progresses. - -Symbolic Functions [C++] -++++++++++++++++++++++++ -The ``cyclus::toolkit::SymbolicFunction`` class and its derivatives provide an -object-oriented hierarchy to represent symbolic functions. Factory methods are -provided by the ``cyclus::toolkit::SymbFunctionFactory`` class. - -Agent Managed Classes [C++] -+++++++++++++++++++++++++++ -There are a number of interfaces provided in the |cyclus| toolkit that can be -used as either as `mixins `_ or as -composable, agent-managed state variables: - -* ``cyclus::toolkit::Builder``: an interface for adding information about agents - that can be built by the manager - -* ``cyclus::toolkit::BuildingManager``: an interface for making build decisions - based on supply, demand, and agents that can be built - -* ``cyclus::toolkit::CommodityProducer``: an interface for adding information - about commodities that can be produced by the manager - -* ``cyclus::toolkit::CommodityProducerManager``: an interface that allows an - agent to query a collection of ``cyclus::toolkit::CommodityProducers`` - -* ``cyclus::toolkit::SupplyDemandManager``: an interface for querying the supply - and demand on commodities - -Geographic Informasion System (GIS) Class [C++] -+++++++++++++++++++++++++++++++++++++++++++++++ - The ``cyclus::toolkit::GIS`` class provide an option to add geographic coordinates - of its friend classes. Haversine distance calculations between two facilities or - agents with GIS coordinates can be performed as well. +.. _toolkit: + +The (Experimental) Cyclus Toolkit +================================= +Currently in an experimental state, the |cyclus| toolkit aims to provide +functionality relevant to a variety of :term:`archetypes ` that do +not belong strictly in the :term:`cyclus kernel`. + +ResBuf +++++++++++++ +The ``cyclus::toolkit::ResBuf`` (C++) or ``cyclus.typesystem.ResBuf`` (Python) class +provides provides a canonical +methodology for dealing with collections of Resources. ``ResBufs`` +are usually used as member variables of archetypes. The Cyclus preprocessor +has special handling for ``ResBuf`` as it can generate all needed code +for proper persistence and intiialization of the buffer. For this to work, +you must annotate the buffer member variable with a Cyclus pre-processor +:ref:`pragma ` (C++) or set a class attribute (Python) +in one of the following ways: + +.. note:: + + ``ResourceBuff`` has been deprecated in favor of ``ResBuf``. + +**C++:** + +.. code-block:: c++ + + // Option 1: minimum required annotation + #pragma cyclus var {} + cyclus::toolkit::ResBuf mybuf; + + // Option 2: you can set a specify buffer capacity + #pragma cyclus var {'capacity': 245.6} + cyclus::toolkit::ResBuf mybuf; + + // Option 3: you can reference another annotated member variable's value + // as the capacity + #pragma cyclus var {} + double buf_cap; + #pragma cyclus var {'capacity': 'buf_cap'} + cyclus::toolkit::ResBuf mybuf; + +**Python:** + +.. code-block:: python + + from cyclus.agents import Facility + import cyclus.typesystem as ts + + class MyFacility(Facility): + # Option 1: minimum required annotation + mybuf = ts.ResBufMaterialInv() + + # Option 2: you can set a specify buffer capacity + mybuf = ts.ResBufMaterialInv(capacity=245.6) + + # Option 3: you can reference another annotated member variable's value + # as the capacity + buf_cap = ts.Double() + mybuf = ts.ResBufMaterialInv(capacity='buf_cap') + +You can read the `ResBuf API documentation +`_ for +more details on how to use the buffer. + +MatQuery [C++] +++++++++++++++ +The ``cyclus::toolkit::MatQuery`` class provides some easy-to-use functions that +interrogate the ``cyclus::Material`` object. For example, one can query the mass +or number of moles of a given nuclide. + +Enrichment [C++] +++++++++++++++++ +A number of functions are provided in ``toolkit/enrichment.h`` that assist in +enrichment-related calculations. Some highlights include a representation of +uranium assays in ``cyclus::toolkit::Assays``, as well as functions to calculate +feed, tails, and SWU quantity requirements. + +Commodity Recipe Context [C++] ++++++++++++++++++++++++++++++++ +The ``cyclus::toolkit::CommodityRecipeContext`` class provides a mapping between +commodities and recipes that can be updated as a simulation progresses. + +Symbolic Functions [C++] +++++++++++++++++++++++++ +The ``cyclus::toolkit::SymbolicFunction`` class and its derivatives provide an +object-oriented hierarchy to represent symbolic functions. Factory methods are +provided by the ``cyclus::toolkit::SymbFunctionFactory`` class. + +Agent Managed Classes [C++] ++++++++++++++++++++++++++++ +There are a number of interfaces provided in the |cyclus| toolkit that can be +used as either as `mixins `_ or as +composable, agent-managed state variables: + +* ``cyclus::toolkit::Builder``: an interface for adding information about agents + that can be built by the manager + +* ``cyclus::toolkit::BuildingManager``: an interface for making build decisions + based on supply, demand, and agents that can be built + +* ``cyclus::toolkit::CommodityProducer``: an interface for adding information + about commodities that can be produced by the manager + +* ``cyclus::toolkit::CommodityProducerManager``: an interface that allows an + agent to query a collection of ``cyclus::toolkit::CommodityProducers`` + +* ``cyclus::toolkit::SupplyDemandManager``: an interface for querying the supply + and demand on commodities + +Geographic Informasion System (GIS) Class [C++] ++++++++++++++++++++++++++++++++++++++++++++++++ + The ``cyclus::toolkit::GIS`` class provide an option to add geographic coordinates + of its friend classes. Haversine distance calculations between two facilities or + agents with GIS coordinates can be performed as well. diff --git a/source/arche/tutorial_cpp/toolkit.rst b/source/arche/tutorial_cpp/toolkit.rst index b876e81d8..02d966097 100644 --- a/source/arche/tutorial_cpp/toolkit.rst +++ b/source/arche/tutorial_cpp/toolkit.rst @@ -73,7 +73,7 @@ thus do not need a pragma There needs to be a mechansim for keeping track of when materials enter the inventory. In order to utilize Cyclus' sophisticated restart capability, we must -choose a data structure that is compatible with the at least one of the Cyclus +choose a data structure that is compatible with at least one of the Cyclus output databases (see :ref:`dbtypes`). Given that requirement, an appropriate data structure is a `list `_. Accordingly, add the diff --git a/source/arche/tutorial_py/setup.rst b/source/arche/tutorial_py/setup.rst index c175145a6..c8c3234a5 100644 --- a/source/arche/tutorial_py/setup.rst +++ b/source/arche/tutorial_py/setup.rst @@ -60,7 +60,6 @@ root tutorial directory. Create one that looks like: setup( name='tut', packages=['tut'], - scripts=['xo'], **setup_kwargs ) @@ -70,7 +69,7 @@ Now we can install the tutorial project via, .. code-block:: console ~ $ cd tutorial - ~/tutorial $ python setup.py install --user + ~/tutorial $ python -m pip install . Let's now make an example input file in a special ``input`` directory: @@ -81,7 +80,7 @@ Let's now make an example input file in a special ``input`` directory: ~/tutorial $ mkdir -p input ~/tutorial $ touch input/storage.py -Now open up the ``input/storage.`` input file and edit it to look like: +Now open up the ``input/storage.py`` input file and edit it to look like: .. code-block:: python diff --git a/source/arche/tutorial_py/state_var.rst b/source/arche/tutorial_py/state_var.rst index 2def677a4..cf2bc8069 100644 --- a/source/arche/tutorial_py/state_var.rst +++ b/source/arche/tutorial_py/state_var.rst @@ -2,12 +2,12 @@ Adding State Variables ======================= In this lesson, we will: -1. Add the necessary state variables to define the storage facility -3. Modify the sample input file to include these variables +#. Add the necessary state variables to define the storage facility +#. Modify the sample input file to include these variables Add State Variables ---------------------------------------------- -The Cyclus Python interface preprocessor provides a ``typesystem`` module that help define +The Cyclus Python interface preprocessor provides a ``typesystem`` module that helps define variables that are state variables for an archetype. These state vars also allow convenient annotations. diff --git a/source/atemplates/layout.html b/source/atemplates/sidebar.html similarity index 96% rename from source/atemplates/layout.html rename to source/atemplates/sidebar.html index cfd6ae8e6..d040d9873 100644 --- a/source/atemplates/layout.html +++ b/source/atemplates/sidebar.html @@ -1,6 +1,4 @@ -{% extends "!layout.html" %} - -{% block sidebarsearch %} +

{{ _('Useful Pages') }}

- {{ super() }}

Get Cyclus


- Current version: 1.5.5 + Current version: 1.6.0

Install:
$ conda install cyclus cycamore
@@ -53,4 +50,4 @@

Acknowledgements

-{% endblock %} +
diff --git a/source/basics/acknowledgements.rst b/source/basics/acknowledgements.rst index 9ce133383..448eec6ab 100644 --- a/source/basics/acknowledgements.rst +++ b/source/basics/acknowledgements.rst @@ -21,6 +21,10 @@ by a number of programs and agencies. * Lab-grad program +* National Nuclear Security Administration + + * NNIS Fellowship + The |Cyclus| project benefits greatly from the computational resources of the University of Wisconsin-Madison's `Center for High Throughput Computing `_ and it's `BaTLab `_ build diff --git a/source/basics/projects.rst b/source/basics/projects.rst index 9741fd9ac..c49641563 100644 --- a/source/basics/projects.rst +++ b/source/basics/projects.rst @@ -13,7 +13,17 @@ Consortium for Verification Technology :width: 100 As part of the `Consortium for Verification Technology (CVT) -`_, |Cyclus| is being used to study issues in -nuclear security and non-proliferation. Research areas include the +`_, |Cyclus| was used to study issues in +nuclear security and non-proliferation. Research areas included the incorporation of social-behavioral models to agent interactions, nuclear material tracking and forensics, and detector sensitivity estimation. + +Systems Analysis & Integration Campaign +--------------------------------------- + +As part of the `Systems Analysis & Integration Campaign (SA&I) +`_, |Cyclus| is +used for modeling fuel cycles to understand potential future fuel +cycle needs and the economics of those fuel cycles. + + diff --git a/source/cep/cep27.rst b/source/cep/cep27.rst index 153d4a21d..ac7b511af 100644 --- a/source/cep/cep27.rst +++ b/source/cep/cep27.rst @@ -28,6 +28,7 @@ Toolkit Implementation ====================== Each |Cyclus| toolkit component will contain 3 different files: + - 2 for the definition of the feature C++ class (``cpp`` and header) that allows the use of the capabilities, and optionally to register its values in the output database, @@ -103,7 +104,9 @@ Example: Without Inheritance: -------------------- ``toolkit/my_feature_snippet.cycpp.h``: -.. highlight:: c + +.. code-block:: c + cyclus::toolkit::Position coordinates(0,0); #pragma cyclus var { \ @@ -125,7 +128,9 @@ Without Inheritance: std::vector cycpp_shape_longitude; ``my_archetype_example.h``: -.. highlight:: c + +.. code-block:: c + #include 'toolkit/Position.h' class fun_archetype : public cyclus::facility{ @@ -137,7 +142,9 @@ Without Inheritance: } ``my_archetype_example.cpp``: -.. highlight:: c + +.. code-block:: c + void fun_archetype::EnterNotify() { coordinates.set_position(latitude, longitude); coordinates.RecordPosition(this); @@ -147,7 +154,9 @@ Without Inheritance: With Inheritance: ----------------- ``toolkit/my_feature_snippet.cycpp.h``: -.. highlight:: c + +.. code-block:: c + #pragma cyclus var { \ "default": 0.0, \ "uilabel": "Geographical latitude in degrees as a double", \ @@ -167,7 +176,9 @@ With Inheritance: std::vector cycpp_shape_longitude; ``my_archetype_example.h``: -.. highlight:: c + +.. code-block:: c + #include 'toolkit/Position.h' class fun_archetype : public cyclus::facility, public Position { @@ -179,7 +190,9 @@ With Inheritance: } ``my_archetype_example.cpp``: -.. highlight:: c + +.. code-block:: c + void fun_archetype::EnterNotify() { this.set_position(latitude, longitude); this.RecordPosition(this); diff --git a/source/cep/cep6.rst b/source/cep/cep6.rst index 5a17cdfe5..ee7db660c 100644 --- a/source/cep/cep6.rst +++ b/source/cep/cep6.rst @@ -3,7 +3,7 @@ CEP 6 - |Cyclus| Pull Request Style Guide :CEP: 6 :Title: |Cyclus| Pull Request Style Guide -:Last-Modified: 2015-05-08 +:Last-Modified: 2024-04-11 :Author: Matthew Gidden :Status: Draft :Type: Process @@ -84,7 +84,7 @@ Automation Using the Github `API `_ either directly or through a module like `github3.py -`_ in conjunction with a standard +`_ in conjunction with a standard style can allow for the automation of otherwise repetitive and time consuming tasks. A chief use case is the generation of release notes. Specifically, if every PR that enables a major and minor feature can be identified and diff --git a/source/conf.py b/source/conf.py index 6d6681178..957b20193 100644 --- a/source/conf.py +++ b/source/conf.py @@ -193,7 +193,9 @@ #html_use_smartypants = True # Custom sidebar templates, maps document names to template names. -#html_sidebars = {} +html_sidebars = { + '**': [ 'searchbox.html', 'sidebar.html'] +} # Additional templates that should be rendered to pages, maps page names to # template names. diff --git a/source/cyclusagent.py b/source/cyclusagent.py index d8843361f..cb40f8dee 100644 --- a/source/cyclusagent.py +++ b/source/cyclusagent.py @@ -46,7 +46,6 @@ def indent(text, prefix): def contains_resbuf(type_str): bufs = ('cyclus::toolkit::ResBuf', 'cyclus::toolkit::ResMap', - 'cyclus::toolkit::ResourceBuff', 'cyclus::toolkit::TotalInvTracker') for buf in bufs: if buf in type_str: diff --git a/source/index.rst b/source/index.rst index d4ac14d00..452d56f9a 100644 --- a/source/index.rst +++ b/source/index.rst @@ -30,32 +30,11 @@ The |Cyclus| project repository is located at http://github.com/cyclus/cyclus Quick Start ----------- -:doc:`Get started with Cyclus ` - -News ----- - -**June 1st, 2018:** :doc:`Cyclus Newsletter Spring 2018! ` - -**October 6th, 2017:** :doc:`Cyclus Newsletter Fall 2017! ` - -**December 13, 2016:** :doc:`Cyclus v1.5.0 is released ` - -**July 6-8, 2016:** Technical workshop on Dynamic Fuel Cycle in Paris, France - -**August 13, 2015:** :doc:`Cyclus included in FY2016 workscopes for the NEUP program ` - -**July 21-24, 2015:** Joint workshop with CLASS_ project held in Madison, WI - -**June 10, 2015:** First Cyclus :doc:`user tutorial ` and :doc:`developer tutorial ` are held at the 2015 ANS Annual Meeting in San Antonio, TX - -**June 7, 2015:** :doc:`Cyclus v1.3.1 is released ` .. toctree:: :maxdepth: 1 - - news/fy16neup - newsletters/oct2017 + + user/install Learn More @@ -73,6 +52,32 @@ Learn More previous/index cite/index + +News +---- + +**May 4, 2024:** `Cyclus v1.6.0 is released `_ + +**April 29, 2024:** :doc:`FY 24 Funding for Cyclus ` + +**January 14, 2020:** `Cyclus v1.5.5 is released `_ + +**June 1, 2018:** :doc:`Cyclus Newsletter Spring 2018 ` + +**October 6, 2017:** :doc:`Cyclus Newsletter Fall 2017! ` + +**December 13, 2016:** `Cyclus v1.5.0 is released `_ + +**July 6-8, 2016:** Technical workshop on Dynamic Fuel Cycle in Paris, France + +**August 13, 2015:** :doc:`Cyclus included in FY2016 workscopes for the NEUP program ` + +**July 21-24, 2015:** Joint workshop with CLASS_ project held in Madison, WI + +**June 10, 2015:** First Cyclus :doc:`user tutorial ` and :doc:`developer tutorial ` are held at the 2015 ANS Annual Meeting in San Antonio, TX + +**June 7, 2015:** `Cyclus v1.3.1 is released `_ + .. _try-it: Try It -- Out-of-Service @@ -96,6 +101,7 @@ Contributors ------------ You can find our amazing contributors through their GitHub contributions for each of the projects: + * `Cyclus Contributors `_ * `Cycamore Contributors `_ diff --git a/source/news/fy24neup.rst b/source/news/fy24neup.rst new file mode 100644 index 000000000..d69f1d90f --- /dev/null +++ b/source/news/fy24neup.rst @@ -0,0 +1,16 @@ +FY2024 NEUP Funding for |Cyclus| +================================================ + +Date: April 29, 2024 + +For FY24-27 the NEUP_ program is providing $1 million in funding to +increase |Cyclus| capabilities to address current and emerging supply +chain and waste management challenges. The research team +is lead by: + +* Dr. Madicken Munk (UIUC, PI) +* Prof. Paul P.H. Wilson, Ken Petersen (UW-Madison) +* Dr. Eva Davidon, Jin Whan Bae (ORNL) + + +.. _NEUP: http://www.neup.gov diff --git a/source/numpydoc/numpydoc.py b/source/numpydoc/numpydoc.py index 4c8355489..2f9d50557 100644 --- a/source/numpydoc/numpydoc.py +++ b/source/numpydoc/numpydoc.py @@ -12,7 +12,7 @@ - Renumber references. - Extract the signature from the docstring, if it can't be determined otherwise. -.. [1] https://github.com/numpy/numpy/blob/main/doc/HOWTO_DOCUMENT.rst.txt +.. [1] https://numpydoc.readthedocs.io/en/latest/format.html#docstring-standard """ from __future__ import division, absolute_import, print_function diff --git a/source/previous/index.rst b/source/previous/index.rst index 3462e8ea2..24cf7d094 100644 --- a/source/previous/index.rst +++ b/source/previous/index.rst @@ -5,21 +5,10 @@ :align: center :scale: 50 -The following are release notes for and links to previously released versions of -|cyclus|: - -.. toctree:: - :maxdepth: 1 - - v1.5.5 - v1.5 - v1.3 - v1.2 - v1.1 - v1.0 - v0.4 - v0.3 - v0.2 +Release notes and changelogs for previous versions of |Cyclus| are +available through the `project GitHub `_. +These pages also contain zips for the source code of each version. These zip +packages are also available below. Note: As official 1.4.0 release has been skipped, all the release notes of 1.4.0 have been included in the 1.5.0. diff --git a/source/previous/v0.2.rst b/source/previous/v0.2.rst deleted file mode 100644 index af52ed61d..000000000 --- a/source/previous/v0.2.rst +++ /dev/null @@ -1,112 +0,0 @@ -======================== -Cyclus 0.2 Release Notes -======================== - -:Author: Cyclus Developers -:Website: http://cyclus.github.io/ -:Contact: cyclus-dev@googlegroups.com - -The Cyclus core team is excited to announce the second stable version -after over a year of development! This includes nearly 1300 commits by -6 developers. Major features include, - -- A module separation effort. This required major changes to the building - and testing system. See Cycamore [1]. - -- Added tests and basic convenience features to various classes, mostly with - respect to the critical material class. - -- Substantive performance improvements (~50x for some simulations). - -- Input code revamp. - -- Output recording code rewrite. - -Changes from 0.1 to 0.2 -======================= - -New features ------------- - -- Added data type specification capability to rng system. -- Made various ResourceBuffer, Material Class, and agent memory management - improvements and tests. -- Made the relaxng schema system modular. -- Made significant build system and installation changes to allow separating - the modules into Cycamore and creating CycStub. -- Moved modules into their own repository (Cycamore). -- Improved or added material convenience functions for developers such as - subtraction, un-normalization, and more. -- Added significant testing in Material, CompMap, and related classes. -- Added additional exception throwing for exceptional absorption and extraction - cases (extracted too much, absorbed negative). -- Made fixes to the build system to better address the needs of Mac OSX users. -- Added libxml++ as a dependency. -- Added features to the command line interface to allow output file - specification. -- Updated code base in accordance with Google Style Guide (0's to NULL when NULL - is intended, prepended iterators, moved curly braces, etc.) -- Expanded extraction by mass to allow various input units. -- Added functions and tests for almost equality and thresholding in the - material class. -- Created the CycArithmetic class which holds tools for more sophisticated - floating point arithmetic. -- Fixed absorption method bug (#493, https://github.com/cyclus/cyclus/issues/493). -- Substantive performance improvements (~50x for some simulations). -- Easier to create/record custom data to output. Modular, drop-in support for - different output formats. -- Top-level simulation flow broken into clear module loading, simulation - initialization/construction, simulation running, and module unloading steps. -- Added ability to invoke daily actions (technically this reduces the timestep to - a single day for modules that need to take advantage of the smaller granularity). -- IsoVector's compmap encapsulated in a separate class. -- IsoVector and material interfaces updated accordingly. -- Added an enrichment toolkit to assist with SWU/NatlU calculations. -- Added SWU/Natural uranium calculation methods. -- Added a facility-building and management interface kit, allowing for - intelligent facility build decision making. -- Added a commodity supply/demand toolkit, providing an interface for - supply/demand inquiry and supplier/demander registration with a manager. -- Added a commodity production toolkit, providing an interface to query agents - ability to produce commodities. -- Added a toolkit for agenting general symbolic functions and factory methods - to produce them. -- Added derived classes to agent linear, exponential, and piecewise functions. -- Added a robust dynamic loading interface for dynamic libraries for easy opening, - access, and closing. -- Separated unix and windows-specific helper functions for dynamic loading. -- Added a generic interface for input querying. -- Added a specific interface for loading, parsing, and querying xml files, - including rng schema verification. -- Added interleaves to cyclus.rng's institution and region sections. -- Added capacity members to cyclus.rng. - -Deprecations ------------- - -- Deprecated converter facilities. - -Known bugs ----------- - -- Known Bug (#514): decayed compositions are not recorded in output database. - - -Contributors -============ - -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Matthew Gidden -* Katy Huff -* Anthony Scopatz* -* Zach Welch* -* Paul Wilson - - -References -========== - -[1] Cycamore: https://github.com/cyclus/cycamore diff --git a/source/previous/v0.3.rst b/source/previous/v0.3.rst deleted file mode 100644 index 8cc245431..000000000 --- a/source/previous/v0.3.rst +++ /dev/null @@ -1,325 +0,0 @@ -======================== -Cyclus 0.3 Release Notes -======================== - -:Author: Cyclus Developers -:Website: http://cyclus.github.io/ -:Contact: cyclus-dev@googlegroups.com - -The Cyclus core team is excited to announce the latest stable version -after over a year of development! This includes nearly 340 commits by -6 developers. Major features include, - -- Implementation of the Cyclus Enhancment Proposal (CEP) system. - -- Merged Cyclopts into cyclus, CEP2 - -- Resource Tracking and Interfaces Re-Re-Redo, CEP17. - -- Google C++ Style Guide compliance. - -Since v0.2, 477 files have changed encompassing 52028 line insertions(+) and -51749 deletions(-). - -Changes from 0.2 to 0.3 -======================= - -New features ------------- - -- removed supply_demand and action_building namespace. closes #248. -- record agent that creates each resource in output db -- changed resource creation to take this ptr instead of context ptr. Removed context arg from Material::CreateUntracked. Made untracked resources have an id of zero instead of an id of garbage. fixed mat doc comments to use new res_buf method names. -- cleaned up resource buf interface. Added some basic templating to eliminate need for separate mat_buff -- added timestamp to resource table. -- sorted lists of files/includes alphabetically -- added header_impl file -- fixed logger macro issue from namespace removal and added a test to catch it at compile time in the future -- alphabetized cyclus.h -- moved all symfunctionptr to symfunction::ptr -- solverptr to solver::ptr -- moved function type pointers to function::ptr -- moved VariablePtr to Variable::Ptr -- removed additional cyclus:: prepends from implementation files -- removed extraneous cyclus namespace from fac_agent impl -- removed extraneous cyclus namespace from comp_math impl -- removed extraneous cyclus namespace from hdf_back impl -- moved solver interface impl under cyclus namespace -- removed extraneous cyclus namespace from commodity_producer impl -- put solver impl under cyclus namespace -- put cbc solver impl in cyclus namespace -- put variable implementation file in cyclus namespace -- removed explicit namespace usage in implementation files for function and building manager -- removed cyclus:: prefix from optim header files -- removed cylus:: prefix from non-optim files -- removed cyclus:: from building manager -- Update copyright years in license -- removed reference to include.h -- move symbolic functions into a different class name -- moved all files out of optim dirs into their respective top levels -- renamed cyclopts to optim -- change module install dir to not be split into separate fac, reg, inst subdirs. Still need to fix schema building and env class and dynamic_loading class correspondingly. made Env::ListModules more robust and include CYCLUS_MODULE_PATH env var dirs in search. Made BuildMasterSchema not care about agent type namespacing subdirs. -- fixed some gcsg issues and a typo -- made timer init method not reset previous timer config (e.g. listeners) - this caused confusion and debugging for me in the past -- made timer ticker registering more robust. Search env var dirs before install dirs for dyn modules. change default dyn module install dir to lib/cyclus instead of lib/Agents -- added hard coded version and more robust --tags flag to git describe for version. -- this should make CI pass... not sure if its what we want, though. -- updated install script with new structure -- made agent test files install to share dir, fixes #559 -- docs now in the top level directory, and a little clean up. fixes #602 -- docs currently build -- removed cyclus namespace from stubs -- moved stub directory to top level, made stubs a separate library, incorporated stub tests into cyclus unit tests -- a little cleaning before stubbing -- enabled testing in new build environment. simplified test module directory structure and building. -- gtest library builds -- added cli to at the top of the directory structure -- actually adds top level cmake file.. -- currently builds cycluscore from top-level directory -- encapsulated stubs namespace in cyclus namespace per gcsg -- redisabled facility tests as that 's a larger issue than this PR -- added include guards -- added stub market -- added stub inst and region. updated stub facility. -- removed any stubs that aren't facs, regions, insts, or agents -- updated namespace name to reflect directory name -- made mock fac/inst/region/market classes to be used with testing. added the stub facility in a new stub namespace and related tests. -- added initial stub directory and adjusted cmake files to include their tests. -- moved all dynamic loading into xml_file_loader. Added a method for listing installed/discoverable dynamic modules to env class. added rng schema methods to test agents and removed rng files from them. removed rng installation from cmake module macro. added master and module schema dumping to cyclus binary. added schema agent test (that schema parses). moved heavy stuff out of xml-file-loader constructor. renamed LoadAll to LoadSim. -- i think moving loglevel and the macros into the same namespace encapsulation is more promising... still unable to confirm. -- finishes remaining doxygen warnings -- I believe that this will fix the warning stemming from logger.h, but I do not see the warning on my machine, so I can't be sure -- fixed begincode error -- removed verbose linking flag -- fixes build error for macs, moves mac linker flag to top of cmake file to set the flag for all compiled libraries in the build -- added cli flag for printing cyclus include dir -- down-selected includes in cyclus.h. Removed remaining vestiges of converter agents -- create cyclus.h. added missing header install -- as @gonuke suggested, adding a preprocessor directive was the right way to go. tested with coin-2.3 on insam -- removed coin include prefix which causes problems on utk's darwin system -- removed unnecessary Config dir. Deleted duplicate (and outdated) LICENSE and README files. -- moved Core source files into base src/ directory. -- moved Testing dir to tests dir. Moved test modules into tests dir. Moved app.cc into new cli dir -- removed disabled tests from being found by the find test script. closes #591. -- removed pesky cout -- removed extraneous string var -- adjusted env var setting to append the current var if it was set -- added robustness in the environmental tests by resetting the environment variable and the dynamic loading tests by making sure to delete and close opened library modules. -- test driver now adds the build directory to the cyclus module path. fixes #592. note that this overwrites the global module variable only for the test driver's environment. -- Remove indirect dependencies -- main now returns 0 -- updated readline to use the decode method. the script is now python2/3 compliant. note that I tested with python3.3. -- renamed id, parentid member vars and accessors -- initfrom to CapCase -- made clone methods CapCase -- added from future import -- made print function python3-compliant -- fixed remaining coin and init issues -- doc improvement -- added python as a dependency -- adds a script to generate test names and adjust build system to add those tests to the make test target appropriately. fixes #176. -- improved clone and initfrom doc comments -- fixed resource table name -- have a working version of a ctest fix. need to clean it up and add python as a dependency before sending a PR -- fixed inst agent tests and fixed duplicate id bug in agent class if implicit copy-constructor is used -- constructor initializer list -- removed cruft from agent class. fixed to not record on undeployed decommission. improved var/accessor names -- removed unnecessary externed Destruct funcs -- fixed inst class tests -- fixed dynamic loading tests - removed redundant test with env class tests. Simplified dynamicModule further. Trying to fix inst class tests - still broken. -- updated test agents. 2 tests still failing -- updated tests to compile with new cloning and deploy semantics -- move clone method into agent class. Killed Clone[stuff] methods into single virtual clonefrom method. Change EnterSimulation[bla] methods into a single, virtual, Deploy method. Moved DynamicModule Init method into constructor. Removed redundant info from facility class (build date, etc.). -- Combiined cyclopts dependency list into cyclus dependency list. -- added file and cli flag for retrieving cyclus core and dependency versions. Fixes #578. -- Simplifying names and correcting some rst grammar. -- Add links to get sample input files. Updated dependency list. -- Update README.rst with additional information about dependencies and correct call of installation. -- removed singleton references in documentation -- undisabled building manager bug -- removed build dead code and mistakenly commited cyclus.rng file -- fixed seg fault due to double delete in tear down -- added tests for the optional query interface -- added cyclus namespace qualifier to new function usage -- moved the optional element query into its own nonmember, nonfriend templated function for easier, one-line usage. -- added tests for null queries -- removed try/catch blocks for fac agent query engine usage -- updated market agent tests for context usage -- added clarification to recipe add/get usage, closes #568 -- added clarification to recipe add/get usage -- style guide names -- style guide name changes. -- renamed externed construct/destruct functions to be CapCase -- updated facility tests to take the context constructor argument -- made a separate test context for easier testing and updated appropriate agent test files -- updated facility agent tests and fixed agent tests -- updated agent tests -- removed unncessary agent registration from context - because markets will soon be superseded by CEP18 anyway. -- updated prototype registration and agent creation to use context. recipe library become so small I moved it into xml_file_loader. renamed xml_file_loader methods according to GCSG and added a LoadAll method. -- moved control param xml parsing into xml_file_loader out of timer. Added timer init method to context. -- removed EM macro and simplified recipe library and changed it to recipe namespace -- fixed segfault issue. fiddled with includes and forward declarations -- everything compiles, but tests segfault -- more work converting core to use context - still doesn't compile -- started outline for a simulation context -- Moving include files to include/cyclus -- changes for making debian packages -- moved setup.py to install.py -- fixed var name style -- unadded redundant neg comp element check. Added test to check for exception throwing -- added missing neg quantity check -- adds comments about composition decay chaining. Remove leftover recipe_lib constructor from debugging -- fixed gcsg names in decay_handler and renamed class to decayer. fixed filename comments in product and improved a couple of guards -- fixes var names and comments to not refer/suggest anything 'vector' ish w.r.t. CompMap code. Change nextId to next_id -- re-disabled test... need more time to investigate -- added disabled building manager test -- readded disabled tests, which now pass -- removed variable bound introspection from the cbc solver. CI should build without issue now. -- moved variable bound introspection based on a VariablePtr into non member non friend functions in variable.h/cc. -- added some more simple tests for the cbc solver. two have been intentionally disabled because the maximization direction for the objective function does not appear to be working. I have double checked that the optimization direction for maximization is correct (it's 1.0) from the coin documentation. I'll investigate further. -- removed bounded 2 variable test, starting simple with 1 variable -- added a 1 variable test that should pass and a test that uses variable bounds. changed test names to better reflect the testing taxonomy -- made implicit cast a static cast -- changed Composition::Vect to CompMap -- added mat_query tests and polished mat_query doc comments -- made mat_query a proper implementation file. Removed contains for now and added almostEq to it. -- polished doc comments for compmath namespace -- fixed var name mistake in res_tracker -- polished doc comments on product, material, res_tracker, and composition classes. Added more complete error check to Product::Absorb -- polished resource class doc comments -- moved resource table all to res_tracker -- finished converting compmath tests -- doc fix -- moves resource-specific param recording into resource class and resource implementations now only record their special state. -- fixed comp_math add and sub funcs. material tests all pass -- moved unique id and bumping implementation into resource class -- fixed absorb and extract errors in material class -- finished remaining compile errors - now to fixing failed tests -- fixed material and matquery tests -- added tests and tried to consolidate iso_vector, comp_map, and material test content into material, composition and comp_math tests. -- everything compiles except tests -- literal 0 -> 0.0 for fp compares -- abs() -> fabs(), types they are a-changing. -- fixes doc errors, should clear up @gonuke's cron job errors -- fixes master schema building -- updated test files so cycamore can build -- ran all files in Core dir through astyle for style guide formatting -- updated enrichment function names -- fixed implementation issues -- fixed all compile errors -- fixed compile error and more sed replaces for typedef names -- fixed many typedefs to be CapCase -- updated macros to install in correct place -- flattened all directories, removed extraneous file, renamed all files and updated files regarding name changes -- renamed most funcs to CapCase -- finished variable-related tests, updated related api, and updated documentation. this last commit closes all code-related issues in cyclus/cyclopts#37. -- changed namespace names, closes #531 -- added tests for objective and constraint functions, updated documentation -- made constraint iterator access const as it should have been -- added tests for the function base class, updated documentation, and made slight API changes based on documentation -- prepended cyclopts to test name for easy regexp selection -- updated solver interface documentation -- made addconstituent public, removing need for friend class -- made variable tests less namespace verbose -- renamed integration tests to properly reflect that they are in fact testing the cbc solver. updates cbc solver documentation. -- added overarching but simple integration test for cyclopts -- resolve rebase compile errors -- renamed Error class files and formatted them according to style guide -- removed exception silencing from sqliteback -- fixed remaining build/run issues -- eliminated super-specific crazy exceptions. Created a few basic exception types to be used throughout cyclus core. Shortened exception class names -- added a test -- hotfix. Anthony's namespace merging wiped out my schema building invocation in XMLLoader. -- fixed header file guards in cyclopts -- fixed line lengths in header files in cyclopts -- fixed line lengths of cyclopts implementation files -- removed using namespace std from cyclopts files -- updated line lengths for header files in cyclopts -- fixed line length for Utility files touched in this PR -- added cyclus namespace on top of cyclopts namespace -- fixes a few things anthony missed -- test update. tag: move and squash -- removed find cyclopts -- updated findcyclopts -- Fixed some merge conflict -- cyclopts testing now exists is subdirectory of Testing -- ns updates finished now to mereg -- removed blas link, unnecessary. -- cyclopts headers now install in cyclopts directory -- added blas and lapack dependency for coin. tag: squash -- removed cyclus_tools in favor of explicit includes of variable and function. made cyclopts_limits limits. -- made cyclopts a subproject whose headers are now called by cyclopts/header.h -- updated readme and setup script -- cyclopts now builds as part of cyclus -- moved cyclopts files into Core directory with history -- Many testing fixes -- reverted some documentation overwrites and added some compliance -- make cyclus up to date with cyclopts google style compliance -- made input file recorded after schema validation -- added include guards as per style guide -- fixes include order, switch indentation, and adds missing map includes to csvback -- updated primary files used in this branch/PR to use google styleguide for indent/naming -- More namespace updates -- fixed Blob.hpp and other formatting. Added tests for each backend for the new blob type. -- Added cyclus::Blob type as a supported backend type for all backends. Removed unnecessary streaming operators in any.hpp. -- fixed query engine errors -- updates cyclus core to reflect cyclopts/cyclopts#33 -- fixed more error, everything is broken -- 'public, protected, private indent one space' -- fixes indent errors in DynamicModule.h described in #530. -- added ns to roesources. -- first cyclus ns changes. -- made buildSchema private. Used Agent class module type list instead of custom one. -- removed cyclus.rng.in generation - now done dynamically in cyclus core -- modified XML loading to dynamically build the master schema by searching for installed modules -- created csv backend. -- fixed name erro -- updated setup with localdir as default for some params -- added uninstall target. closes #268. -- made ~/.local the default install directory in the setup.py -- Actually have them all and they all work. -- I think that I got them all.. -- added hdf5 dep to readme instructions. fixes #520. -- fixed enum element style -- made eventmanager handle insertion of uuids into all events. backends now need to check for and handle boost::uuids::uuid value type -- wrote custom pool allocator new and delete for Event class. Created a producer/consumer type memory reuse vector in EventManager to prevent new/delete calls -- changed c cast to static_cast -- Added modified warning to any.hpp. added comment about event vals vector reserve -- added shortcut to void* in any.hpp. Simplified hdf5 backend fillBuff -- speed up event class by reserving capacity for event vals -- switched event class to use a tweaked boost::spirit::hold_any allowing non-explicit construction instead of boost::any. 30% performance boost of total inpro_low runtime. -- found out that boost has a installed called bjam. bjam has an option --layout which can take the form tagged. tagged adds -mt and - to a library. if multithreading is on (which it is by default), it must find a library with the -mt tag. I was able to turn off multi threading for it to find the boost libraries installed in filespace/groups/cnerg/cyclus_dependencies. I'd like to leave the comment there for posterity. this set of commits closes #521. -- added a message to determine which libraries were being used -- updated readme's boost version -- fixed null-padding on strings issue. changed set to group so Anthony is happy. -- changed hdf5 ext to .h5. Hdf5Back constructor takes std::string -- adds better doc comment to hdf5back class. Uncomments the db file deleting line. -- added hdf5back test -- added custom backend specification to App.cp via output file extension -- rewrote hdf5 backend to use C API. Made Sqlite destructor virtual -- refactored hdf5 back by splitting large code into smaller functions. -- created hdf5 backend - seems to be working. Probably could use some performance tweaking. - -Deprecations ------------- -N/A - -Known bugs ----------- -N/A - -Contributors -============ - -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Royal Elmore -* Matthew Gidden -* Katy Huff -* Olzhas Rakhimov* -* Anthony Scopatz -* Zach Welch -* Paul Wilson - diff --git a/source/previous/v0.4.rst b/source/previous/v0.4.rst deleted file mode 100644 index 208c49d17..000000000 --- a/source/previous/v0.4.rst +++ /dev/null @@ -1,97 +0,0 @@ -======================== -Cyclus 0.4 Release Notes -======================== - -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version -of the cyclus ecosystem! This includes over 415 commits by -6 developers. Major features include, - -- Brand new Dynamic Resource Exchange Procedure, removed the previous notion - of markets, CEP18 - -- Continuous integration for all pull requests now occurs via BaTLab though - polyphemus. - -- Cleaned up API for agent instantiation and deallocation. Users no longer should - worry about memory management of their agents. - -- Added regression tests to the test suite. - -- Many bug and testing issues were fixed. - -Since v0.3, 207 files have changed encompassing a net 9173 line insertions(+) and -5043 deletions(-). - -Changes from 0.3 to 0.4 -======================= - -New features ------------- - -- added more detail about context agent ownership and stack agents are bad. (7682c6c) -- changed clone methods to use context-arg constructor (eaede68) -- changed xml Init[Core/Module]Member fan methods to be InitFrom chain. - Gave agent class a default val for *spec_* to facilitate testing of xml init - methods. (3efb2b6) -- renamed InitCoreMembers to InitFrom (f6e0add) -- fixed deploy self as parent bug in xmlfileloader. Agent class removes 'this' - from context *agent_list_* in destructor to prevent some segfaults when - agents are allocated on the stack causing a double delete (one by runtime and - one by context). Put guard on context::DelAgent to only delete if the agent is - in the *agent_list_* (53ec514) -- made context agent management more universal. Made *agent_list_* a std::set. - added doc comment about context agent management. minor tweaks (45efa47) -- removed agent_list getters from context class. agent list is now entirely - context-private (4b18f0d) -- updated exclusivity adjustment. this bug wasn't evident (or testable) because - capacity-constraints will cause tomatch < remain which then will by definition - be tomatch < excl_val of arc. all tests pass and alls well. (0ee97f2) -- made greedy algorithm a little simpler for exclusive arcs (deb90a0) -- added a namespace specifically for solver testing (9eaa900) -- exclusive bids now supported and tested (a098999) -- smaller hdf5 table chunk size and turn compression on (a3c4e98) -- trimmed fat from cyclus.rng.in and finished rng cleanup. (e1928dd) -- added authorship file (f021d01) -- moved test objects off the heap, fixes the building manager tests (d6d60e9) -- renamed timeagent ta vars to timelistener tl vars (3728fa0) -- removed boost date stuff from timer (60df1c9) -- renamed timeagent to timelistener and methods to just tick/tock. - removed daily tasks (4b07b64) -- renamed EventManager to Recorder and renamed Event to Datum and EventBackend to - RecBackend (8d2b9a6) -- initialized more members of the exchange node struct (3193d72) -- updated the initfrom interface to be easier to use/more intuitive (b2ba4e1) -- made context more resource generic (ed39a0d) -- buffers default to having a capacity (8497bf5) -- added a context helper for a facility with many input and output recipes and - commodities (13cffc7) -- added a hook for the context to register a facility (136d13a) -- added a resource exchange class (4a810d9) -- added request portfolios and associated tests. required notion of equality of - capacity constraints and requests and required notion of ordering of capacity - constraints for use as a map key, so I added an id member and associated < operator. - (f464cb8) -- added request class and associated tests for materials (202048c) - -Known bugs ----------- -N/A - -Contributors -============ - -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Royal Elmore -* Matthew Gidden -* Katy Huff -* Olzhas Rakhimov -* Anthony Scopatz -* Zach Welch -* Paul Wilson diff --git a/source/previous/v1.0.rst b/source/previous/v1.0.rst deleted file mode 100644 index 3d760acab..000000000 --- a/source/previous/v1.0.rst +++ /dev/null @@ -1,98 +0,0 @@ -======================== -Cyclus 1.0 Release Notes -======================== - -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version -of the cyclus ecosystem! This includes over 5000 commits by -8 developers. - -Major features -============== - -- Cyclus Enhancement Proposal (CEP) system for large changes - -- Testing suite - - * unit tests - * integration tests (continuous through BaTLab and Polyphemus) - * regression tests - -- Resource tracking functionality and resource interface simplicity (CEP 17) - -- Complicated fuel cycles enabled via dynamic resource exchange (CEP 18) - -- Advanced time step execution for consistent agent behavior (CEP 20) - -- Basic modules in Cyclus core, advanced modules in Cycamore - - * relatedly, agent identification (CEP 21) - -- Pre-processing - - * auto-generate input/output archetype code for supported datatypes - -- Simulation initialization and restart - -- Now using PyNE for nuclear data (http://pyne.io) - -- Basic Lodtka-Volterra predator/prey-like simulation behavior demonstrated - -- Updated build system - - * kernel in ``$PREFIX/lib/`` as ``cyclus`` (i.e., ``libcyclus.so`` or - ``libcyclus.dylib``) - - * cyclus agents in ``$PREFIX/lib/cyclus`` as ``agents`` - - * cyclus generic agent archetype unit tests in ``$PREFIX/lib/cyclus`` as - ``baseagentunittests`` - - * cycamore agents in ``$PREFIX/lib/cyclus`` as ``cycamore`` - - * cyclus unit tests in ``$PREFIX/bin`` as ``cyclus_unit_tests`` - - * cycamore unit tests in ``$PREFIX/bin`` as ``cycamore_unit_tests`` - - * support for easy build/install of modules with single agent archetype and - associated tests - - * support for easy build/install of modules of group of agent archetypes and - associated tests - -- Toolkit - - * separation of additional "helper" classes and interfaces out of kernel - source directory and namespace - -- Significantly updated database schema, utilized for both canonical input and - output - - * supports variable length datatypes for both sqlite and hdf5 - -Since v0.4 - -* Cyclus: 1,125 commits resulted in 262 changed files encompassing a net 33,825 - line insertions(+) and 9,676 deletions(-). - -* Cycamore: 270 commits resulted in 133 changed files encompassing a net 2,243 - line insertions(+) and 95,294 deletions(-). - -Contributors -============ - -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Matthew Gidden -* Katy Huff -* Arrielle Opotowsky -* Olzhas Rakhimov -* Anthony Scopatz -* Zach Welch -* Paul Wilson - diff --git a/source/previous/v1.1.rst b/source/previous/v1.1.rst deleted file mode 100644 index b37218c1e..000000000 --- a/source/previous/v1.1.rst +++ /dev/null @@ -1,58 +0,0 @@ -======================== -Cyclus 1.1 Release Notes -======================== -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version -of the cyclus ecosystem! This includes nearly 300 commits by -8 developers. - -Major features -============== -- Ability to force decay calculations off everywhere in the simulation. -- A menagerie of new datatypes: - - * ``std::vector`` - * ``std::vector`` - * ``std::set`` - * ``std::list`` - * ``std::pair`` - * ``std::map`` - * ``std::map`` - * ``std::map`` - * ``std::map`` - * ``std::map`` - -- Human-readable nuclide names may now be uses in input files. -- Memory leak bug fix. -- New 'schematype' state variable annotation allows archetype developers to - explicitly set the XML datatype in the schema for a given state variable, - rather than relying on defaults. -- Quantity-based constraints added to DRE. -- Automatic archetype discovery with '-l' and '-a' command line arguments. -- Better error handling in cycpp. -- Optional allocation optimization using tcmalloc. - -Since v1.0, - -* Cyclus: 243 commits resulted in 274 changed files encompassing a net 24,441 - line insertions(+) and 5,222 deletions(-). - -* Cycamore: 38 commits resulted in 69 changed files encompassing a net 1,948 - line insertions(+) and 1,855 deletions(-). - -Contributors -============ -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Matthew Gidden -* Katy Huff -* Arrielle Opotowsky -* Olzhas Rakhimov -* Anthony Scopatz -* Zach Welch -* Paul Wilson diff --git a/source/previous/v1.2.rst b/source/previous/v1.2.rst deleted file mode 100644 index ba5372de3..000000000 --- a/source/previous/v1.2.rst +++ /dev/null @@ -1,50 +0,0 @@ -======================== -Cyclus 1.2 Release Notes -======================== -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version -of the cyclus ecosystem! This includes over 125 commits by 5 developers. - -Major features -============== -- Added 'entity' key to the archetype annotations. This may take on one of the - following values: region, institution, facility, archetype, or unknown. -- Added further reflection to archetypes by including 'parents' and 'all_parents' - lists to the metadata. -- Added archetype name to metadata annotations. -- Nicer looking JSON strings. -- Fixed dynamic loading error that was triggered in weird cases on linux. -- The command ``cyclus -m`` now returns all metadata. -- Added Squash() functions to MatQuery class. -- Added 'nuclide' to availible 'uitypes'. -- Added Extra debugging info via ``CYCLUS_DEBUG_DRE`` environment variable. -- Added new experimental ResBuf class for resource buffering. -- Added optional tails buffer to enrichment class. -- Many bug fixes. - -Since v1.1, - -* Cyclus: 95 commits resulted in 644 changed files encompassing a net 2347 - line insertions(+) and 397 deletions(-). - -* Cycamore: 33 commits resulted in 15 changed files encompassing a net 93 line - insertions(+) and 91 deletions(-). - -Contributors -============ -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Robert Flanagan* -* Matthew Gidden -* Katy Huff -* Arrielle Opotowsky -* Olzhas Rakhimov -* Anthony Scopatz -* Zach Welch -* Paul Wilson -* John Xia* diff --git a/source/previous/v1.3.rst b/source/previous/v1.3.rst deleted file mode 100644 index 70b04dc2c..000000000 --- a/source/previous/v1.3.rst +++ /dev/null @@ -1,91 +0,0 @@ -.. _1.3: - -================================== -Cyclus 1.3 Release Notes -================================== -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version of the -cyclus ecosystem! - -Major features -============== - - -`Cyclus `_ ---------------------------------------------- - -- ~3x speedups for recipe-based simulations -- Basic inventory policies added -- Support for recursive containers in archetypes -- Many new recursive containers added to sqlite backend -- Regression tests run on macs! -- A MockSim interface for full simulation testing without input files -- Added customizeable TimeSeries output for recording archetype-specific time - series -- Added json-to-xml conversion capability -- Added new ResMap container -- Decay added (via Pyne)! An input file flag can be set to - - never: never decay - - manual: archetypes must call the decay API manually - - lazy: materials are decayed as needed when their Material::comp function is - called - -`Cycamore `_ --------------------------------------------------- - -- New facility archetypes added - - Reactor - - FuelFab - - Separations - - Enrichment -- Other facility archetypes removed - - BatchReactor - - EnrichmentFacility -- Some experimental archetype APIs updated - - GrowthRegion -- Much better end-of-life fuel handling in reactors -- Regression tests run on macs! - -`Cymetric `_ --------------------------------------------------- - -- First release for a new analysis and visualization tool for Cyclus simulation output -- Command line tool and Python interface -- Calculates metrics of user interest from a Cyclus database - - Writes metrics back to database - - Simple for users to extend the suite of metrics - - Designed so calculations can be based on dependencies (other metrics or root metrics) - - Uses pandas data types - - Uses PyNE for nuclear data -- Visualization available from the command line via matplotlib - -Summary -======= - -Since v1.2.0, - -* Cyclus: 409 commits resulting in 113 files changed, 8466 insertions(+), 1760 deletions(-) - -* Cycamore: 353 commits resulting in 79 files changed, 7466 insertions(+), 6830 deletions(-) - -* Cymetric: 366 commits resulting in 49 files changed, 5978 insertions(+), 266 deletions(-) - -Contributors -============ -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Denia Djokic* -* Robert Flanagan -* Matthew Gidden -* Katy Huff -* Meghan McGarry* -* Arrielle Opotowsky -* Olzhas Rakhimov -* Anthony Scopatz -* Paul Wilson -* John Xia diff --git a/source/previous/v1.5.rst b/source/previous/v1.5.rst deleted file mode 100644 index 8af0eb79c..000000000 --- a/source/previous/v1.5.rst +++ /dev/null @@ -1,143 +0,0 @@ -.. _1.5.0: - -================================== -Cyclus 1.5.0 Release -================================== -:Author: Cyclus Developers -:Website: http://fuelcycle.org/ -:Contact: https://groups.google.com/forum/#!forum/cyclus-dev - -The Cyclus core team is excited to announce the latest stable version of the -Cyclus ecosystem! - -Major Features -============== - -Compatibility: - -* C++ 11 support is now required to compile Cyclus and Cycamore. - -* Resource exchange preferences now default to 1.0 instead of zero. - - -`Cyclus `_ ---------------------------------------------- - -Features: - -* Resource exchange now supports COIN linear and mixed integer linear solvers. - This can be specified in the input file. - -* Added new optional :ref:`ExplicitInventory ` and - :ref:`ExplicitInventoryCompact ` tables to the - database that can be enabled via input file. - -* Implemented custom time step duration that can be set in the input - file (i.e. CEP 23). - -* Agents/archetypes now can provide their own versions that are recorded in - the :ref:`AgentVersion ` table in the database for - provenance/reproducibility. - -* Support for new datatypes added to the sqlite backend: - - - ``std::list >`` - - ``std::map > >`` - - ``std::vector, std:map > > >`` - - -* ``cycpp`` now supports the ``internal`` annotation for state variables - allowing them to be persisted in the database, but not visible in the input - file or GUI. - -* Adding 2 new variables to allow adjustments to the caculation tolerance: - ``tolerance`` and ``tolerance_generic``. - -* Building stubs archetypes now requires C++11. - -* More effective hdf5 backend generation by using an AST setup with various - nodes and blocks of nodes - -* Generate lastest version in dbtypes.json upon install - -* Now generate a Python library allowing Cymetric to be full Python - -Bug fixes: - -* Fixed floating-point comparison bugs in DRE causing incorrectly failed - resource trades. - -* Determinism/reproducibility improved by calling agents' resource exchange - related functions in consistent order. - -* Fixed invalid memory access bugs affecting newer and mac compilers. - -* xinclude substitutions in input files are now processed for the input file - stored in output databases - rather than storing the incomplete, partial - input file. - -* Archetype compilation now correctly fails early if the ``cycpp`` - preprocessor fails. - -* Fix late silent failures on <= 0.0 quantity bids to early loud failures. - -* ``cyclus::toolkit::ResBuf`` is no longer experimental. - -* Fix bad types in ``dbtypes.json`` - - -`Cycamore `_ --------------------------------------------------- - -* Added Storage archetype. This Facility is intended to hold materials for a - user specified amount of time in order to model a storage facility with a - certain residence time or holdup time. - -* Added Mixer archetype. This facility Mixer mixes N streams with fixed, - static, user-specified ratios into a single output stream. The Mixer has N - input inventories: one for each streams to be mixed, and one output stream. - The supplying of mixed material is constrained by available inventory of mixed - material quantities. - -* All Cycamore archetypes now uses the ``tolerance_resource`` for all the buffer ``Pop``. - - -`Cymetric `_ --------------------------------------------------- - -* Added new metrics: full list `here `_ -* Added a new directory with cymetric usage examples -* Separated out all archetype-specific metrics from the main metrics -* Is now full Python - - -Summary -======= - -Since v1.3.0, - -* Cyclus: 865 commits resulting in 213 files changed, 23823 insertions(+), 6436 deletions(-) - -* Cycamore: 177 commits resulting in 71 files changed, 4389 insertions(+), 2077 deletions(-) - -* Cymetric: 65 commits resulting in 58 files changed, 1490 insertions(+), 4220 deletions(-) - - -Contributors -============ -The following people contributed to this release of Cyclus. A "*" by their -name indicates a first time contributor. Names follow alphabetically, - -* Robert Carlsen -* Robert Flanagan -* Matthew Gidden -* Ryan Hodge* -* Katy Huff -* Jenny Littell* -* Meghan McGarry -* Baptiste Mouginot* -* Arrielle Opotowsky -* Anthony Scopatz -* Steve Skutnik* -* Paul Wilson - diff --git a/source/user/install.rst b/source/user/install.rst index e76db4b83..36dcd673d 100644 --- a/source/user/install.rst +++ b/source/user/install.rst @@ -40,21 +40,17 @@ will identify the best approach for you. - **Recommended** for developers or users who **require the bleeding edge version** of |Cyclus| - **Required** for developers who wish to **contribute to kernel development** of |Cyclus| +* :doc:`Install from Docker `: -.. toctree:: - :maxdepth: 1 - - install_binary - install_docker - install_custom - install_from_git - install_from_tarball + - *Requires Docker install on machine and familiarity with Docker* 2. Run Cyclus with a Sample XML File ------------------------------------- -Try running |Cyclus| for yourself. The result will be a :doc:`database ` named cyclus.sqlite. Use the drop down menu to load the sqlite file into Cyclist for data visualization, or use your favorite sqlite browser to peruse. +Try running |Cyclus| for yourself. The result will be a :doc:`database ` named cyclus.sqlite. +Use your favorite sqlite browser to peruse, or explore the data using +`Cymetric `_. .. code-block:: bash diff --git a/source/user/install_binary.rst b/source/user/install_binary.rst index 41a3720ef..436a164da 100644 --- a/source/user/install_binary.rst +++ b/source/user/install_binary.rst @@ -1,51 +1,39 @@ -################################# -Installing |Cyclus| with Binaries -################################# - -|Cyclus| supports two binary installation options: - -.. include:: CYCAMORE_DEPS.rst - :start-after: .. website_include_binary_start - :end-before: .. website_include_binary_end - -.. include:: CYCAMORE_DEPS.rst - :start-after: .. website_include_conda_start - :end-before: .. website_include_conda_end - - -#. Once you have conda installed, installing |Cyclus| and Cycamore is - straightforward. If you are having issues with certificate verification - you may install using the second set of commands to fix these issues. - - .. code-block:: bash - - $ conda install -c conda-forge cycamore - - .. code-block:: bash - - $ conda config --set ssl_verify false - $ conda install -c conda-forge cycamore - -#. .. include:: unit_test.rst - -.. include:: CYCAMORE_DEPS.rst - :start-after: .. website_include_deb_start - :end-before: .. website_include_deb_end - -#. Download the latest Cycamore Debian installation package `here - `_. You can - download previous/different version `here `_. - -#. Install the package by running: - - .. code-block:: bash - - $ sudo dpkg -i cycamore-x.x.x-Linux.deb - -#. .. include:: unit_test.rst - -Happy simulating! - -.. _Anaconda: https://www.anaconda.com/download -.. _miniconda: http://conda.pydata.org/miniconda.html -.. _`dependency installation documentation`: DEPENDENCIES.html +################################# +Installing |Cyclus| with Binaries +################################# + +|Cyclus| supports two binary installation options: + +.. include:: CYCAMORE_DEPS.rst + :start-after: .. website_include_binary_start + :end-before: .. website_include_binary_end + +.. include:: CYCAMORE_DEPS.rst + :start-after: .. website_include_conda_start + :end-before: .. website_include_conda_end + +.. include:: unit_test.rst + +.. include:: CYCAMORE_DEPS.rst + :start-after: .. website_include_deb_start + :end-before: .. website_include_deb_end + +At this point |Cyclus| should be successfully installed on your system and you are ready to install Cycamore. + +#. Download the latest Cycamore Debian installation package `here + `_. Previous/different + versions are `also available `_. + +#. Install the package by running: + + .. code-block:: bash + + $ sudo dpkg -i cycamore-x.x.x-Linux.deb + +#. .. include:: unit_test.rst + +Happy simulating! + +.. _Anaconda: https://www.anaconda.com/download +.. _miniconda: http://conda.pydata.org/miniconda.html +.. _`dependency installation documentation`: DEPENDENCIES.html diff --git a/source/user/tutorial/add_sep.rst b/source/user/tutorial/add_sep.rst index 927c6a3cb..f21c494d8 100644 --- a/source/user/tutorial/add_sep.rst +++ b/source/user/tutorial/add_sep.rst @@ -32,7 +32,7 @@ The following is the input template for ``Cycamore::Separations`` archetype: _______ _______ - @@ -47,7 +47,7 @@ The following is the input template for ``Cycamore::Separations`` archetype: * Used-MOX-Fuel * The maximum feed inventory is the most feed material that we'll have on hand: 1000 tonnes. -* The maxium separations throughout is the size of our plant: 80 tonnes/timestep +* The maximum separations throughout is the size of our plant: 80 tonnes/timestep * This simple scenario will have a single output stream: Separated-Fissile * we will hold no more than 5 tonnes of separated material on hand at any time * 99% of all Pu (94000) will go into that stream @@ -82,7 +82,7 @@ Filling in the template, the input block looks like: 94000 0.99 - diff --git a/source/user/tutorial/data_explorer.rst b/source/user/tutorial/data_explorer.rst deleted file mode 100644 index 0209b9b40..000000000 --- a/source/user/tutorial/data_explorer.rst +++ /dev/null @@ -1,636 +0,0 @@ -An Introduction to Data Exploration -===================================== - -Cymetric provides a way to fluidly explore the -data that arises from a |cyclus| simulation. A variety of metrics, plots, and information can be -manipulated and viewed in a straightforward and interactive way to develop a thorough -understanding of the features that matter the most. - -Concept: Cyclus Output file ---------------------------- -|Cyclus| creates an SQLite (``.sqlite``) database file as its output. SQLite is a database file -type that consists of a series of tables. A few functions have been -included in ``analysis.py``, a file in downloaded the github repository of this tutorial, to pull information from the sqlite -database and create figures. - -An sqlite database can be opened by viewers like ``sqlitebrowser`` or ``sqliteman``, -but these database browsers aren't intended for powerful analysis. -Importing the data into an external function and analyzing it -is a more powerful approach. However, it can still be helpful to -open and view the tables. - -Analyze the results: -~~~~~~~~~~~~~~~~~~~~ - - -This is a view of the tables within the database -(using DB browser for SQLite). To view the data within these -tables, switch to the **Browse Data** tab and select the table of interest. -Some tables have data that may need to be manipulated or used alongside -other data in other tables, which is why using a python script is often -ideal. - -.. code:: ipython3 - - from pyne import nucname - import write as write - import analysis as analysis - import matplotlib.pyplot as plt - import numpy as np - from numpy import isclose - import matplotlib.pyplot as plt - - -.. parsed-literal:: - - Usage: python write_input.py [csv][init_date] [duration] [output_file_name] - - -First, a *cursor* that points to the sqlite file is created to the output file. A *cursor* points to the cyclus output file you wish to use and its commonly used when running analysis functions as it 'bookmarks' the file you wish to analyze. - -1. To make a cursor, use the ``analysis.cursor(output_filename)`` function where output_filename is name of the cyclus output file. - -.. code:: ipython3 - - cur = analysis.cursor('cyclus.sqlite') - -Simulation Time Info --------------------- - -.. code:: ipython3 - - init_year, init_month, duration, timestep = analysis.simulation_timesteps(cur) - print('Start year:' + str(init_year)) - print('Start month:' + str(init_month)) - print('Duration of simulation months:' + str(duration)) - print('List of timesteps:' + str(timestep[0:3]) +' . . . ' +str(timestep[-4:-1])) - - - -.. parsed-literal:: - - Start year:2018 - Start month:1 - Duration of simulation months:720 - List of timesteps:[ 0. 1. 2.] . . . [ 716. 717. 718.] - - -.. code:: ipython3 - - # prints maximum required sfr fuel throughput per timestep - fuel = cur.execute('SELECT time, sum(quantity) FROM transactions ' - 'INNER JOIN resources ON resources.resourceid = ' - 'transactions.resourceid WHERE commodity = "fresh-uox"' - ' GROUP BY time').fetchall() - - fresh_uox = np.array(fuel) - fuel_transaction = [fuel[1] for fuel in fresh_uox] - fuel_timestep = [fuel[0] for fuel in fresh_uox] - - maximum_fuel_moved = np.amax(np.array(fuel)) - print('Maximum amount of fresh-uox moved: ' + str(maximum_fuel_moved)) - - first_fuel_transaction = np.array(fuel)[0][1] - print('Amount of fresh-uox moved at first timestep: ' + str(first_fuel_transaction)) - #print(max(analysis.simulation_timesteps(fuel, duration, True))) - - plt.plot(fuel_timestep,fuel_transaction) - plt.xlabel('Time (months)') - plt.ylabel('Mass of Fresh-uox moved (kg)') - plt.title('Fresh-uox transaction timeseries') - - -.. parsed-literal:: - - Maximum amount of fresh-uox moved: 99000.0 - Amount of fresh-uox moved at first timestep: 99000.0 - - - - -.. parsed-literal:: - - Text(0.5,1,'Fresh-uox transaction timeseries') - - - - -.. image:: output_6_2.png - - -Activity: Track Uranium -+++++++++++++++++++++++ - -Total mass traded -^^^^^^^^^^^^^^^^^ - -How much :math:`^{235}`\ U left the 1178MWe BRAIDWOOD-1? To find out, -lets use the ``total_isotope_traded`` function! The -``total_isotope_traded`` takes three input arguments: - cur (cursor to -*CYCLUS* output file) - facility (facility of interest) - flux -(direction of isotope transaction) - nucid (nuclide id) - -.. raw:: html - -
- -**Interactive Input** Using the table below, create the following -variables. Include appropriate comments. - -.. raw:: html - -
- -+----------------+-----------------------------+----------------------------------+ -| Variable | Value | Purpose | -+================+=============================+==================================+ -| ``cur`` | ``cur`` | cursor to *CYCLUS* output file | -+----------------+-----------------------------+----------------------------------+ -| ``facility`` | ``'1178MWe BRAIDWOOD-1'`` | facility of interest | -+----------------+-----------------------------+----------------------------------+ -| ``flux`` | ``'out'`` | isotope transaction direction | -+----------------+-----------------------------+----------------------------------+ -| ``nucid`` | ``922350000`` | nuclide id | -+----------------+-----------------------------+----------------------------------+ - - -Using the table above, let's find out how much :math:`^{235}`\ U left the 1178MWe BRAIDWOOD-1? -1. In your IPython notebook create the variables: - -* ``facility`` that is equal to ``'1178MWe BRAIDWOOD-1'`` -* ``flux`` that is equal to ``'out'`` -* ``nucid`` that is equal to ``922350000`` - -.. code:: ipython3 - - cur = cur # cursor to CYCLUS output file - facility = '1178MWe BRAIDWOOD-1' # facility of interest - flux = 'out' # isotope transaction direction - nucid = 922350000 # nuclide id - print('Total amount of U235 that left the '+ str(facility) +' reactor:') - analysis.total_isotope_traded(cur,facility,flux,nucid) - - -2. When ready, click the ``run`` button. - -3. As you see the answer is: - -.. parsed-literal:: - - Total amount of U235 that left the 1178MWe BRAIDWOOD-1 reactor: - - - - -.. parsed-literal:: - - 13431.0 - - - - -Activity: Plot SNF Mass -+++++++++++++++++++++++ -Now let's plot the cumulative mass of the spent nuclear fuel that is -taken out of the 1178MWe BRAIDWOOD-1. Again, let's use the handy -``analysis.plot_out_flux_cumulative``\ function which takes input -arguments: - cur (cursor to *CYCLUS* output file) - facility (facility -of interest) - title (title of plot) - -.. raw:: html - -
- -**Interactive Input** Using the table below, create the following -variables. Include appropriate comments. - -.. raw:: html - -
- -+----------------+-----------------------------------------------------------+----------------------------------+ -| Variable | Value | Purpose | -+================+===========================================================+==================================+ -| ``cur`` | ``cur`` | cursor to *CYCLUS* output file | -+----------------+-----------------------------------------------------------+----------------------------------+ -| ``facility`` | ``'1178MWe BRAIDWOOD-1'`` | facility of interest | -+----------------+-----------------------------------------------------------+----------------------------------+ -| ``title`` | ``'Cumulative Isotope Outflux of 1178MWe BRAIDWOOD-1'`` | title of plot | -+----------------+-----------------------------------------------------------+----------------------------------+ - -.. code:: ipython3 - - plt.rcParams['figure.figsize'] = [10, 8] - plt.rcParams['legend.fontsize'] = 12 - facility = '1178MWe BRAIDWOOD-1' - title = 'Cumulative Isotope Outflux of 1178MWe BRAIDWOOD-1' - analysis.plot_out_flux_cumulative(cur, facility, title) - - - -Activity: Plot Fresh Fuel Mass -++++++++++++++++++++++++++++++ - Now let's plot the cumulative mass of the fresh nuclear fuel that is - put into the 1178MWe BRAIDWOOD-1. Again, let's use - ``analysis.plot_in_flux`` which takes the arguments: - - * cur - * facility = ``'1178MWe BRAIDWOOD-1'`` - * title = ``'Cumulative Isotope Influx of 1178MWe BRAIDWOOD-1'`` - -.. code:: ipython3 - - facility = '1178MWe BRAIDWOOD-1' - title = 'Cumulative Isotope Influx of 1178MWe BRAIDWOOD-1' - analysis.plot_in_flux(cur, facility, title) - - - -.. parsed-literal:: - - The agent_id for Reactor is: - - - - -.. parsed-literal:: - - ['21'] - - - -In cyclus, facilities are defined by their ``prototype_id``. For example -if the simualtion had 20 different reactors, we could still find a -certain one via its ``prototype_id``. - -.. raw:: html - -
- -**Interactive Input** In the cell below use type, find the prototype\_id -of the ``'1178MWe BRAIDWOOD-1'`` reactor by making variable called: -``facility`` and making it equal to ``'1178MWe BRAIDWOOD-1'`` and then -run the cell. - -.. raw:: html - -
- -.. code:: ipython3 - - facility = '1178MWe BRAIDWOOD-1' - print('The prototype_ids for' + ' ' + facility + ' ' +'' + 'are:') - analysis.prototype_id(cur, facility) - - -.. parsed-literal:: - - The prototype_ids for 1178MWe BRAIDWOOD-1 are: - - - - -.. parsed-literal:: - - ['21'] - - - -Let's find out what the ``prototype_id`` for the ``'UraniumMine'`` in -our simulation is. - -.. code:: ipython3 - - facility = 'UraniumMine' - print('The prototype_ids for' + ' ' + facility + ' ' +'' + 'are:') - analysis.prototype_id(cur, facility) - - -.. parsed-literal:: - - The prototype_ids for UraniumMine are: - - - - -.. parsed-literal:: - - ['23'] - - - -We can use these agent\_ids and prototype\_ids to find out more -information on these facilities. For example, let's say we wanted to -find out how much ``'fresh-uox'`` goes through the -``'1178MWe BRAIDWOOD-1'`` reactor? We can use the -``facility_commodity_flux`` function to find out. - -.. raw:: html - -
- -**Interactive Input** Using the table below, create the following -variables. Include appropriate comments. - -.. raw:: html - -
- -+----------------------------+---------------------+------------------------------------+ -| Variable | Value | Purpose | -+============================+=====================+====================================+ -| ``cur`` | ``cur`` | cursor to *CYCLUS* output file | -+----------------------------+---------------------+------------------------------------+ -| ``agentids`` | ``[21]`` | ``agent_id`` of reactor | -+----------------------------+---------------------+------------------------------------+ -| ``facility_commodities`` | ``['fresh-uox']`` | commodity of interest | -+----------------------------+---------------------+------------------------------------+ -| ``is_cum`` | True | cumulative of commodity amount | -+----------------------------+---------------------+------------------------------------+ -| ``is_outflux`` | False | Influx of commodity into reactor | -+----------------------------+---------------------+------------------------------------+ - -.. code:: ipython3 - - analysis.facility_commodity_flux(cur,agentids=[21],facility_commodities=['fresh-uox'],is_cum=True,is_outflux=False) - - - - - - -As seen above, the ``facility_commodity_flux`` function returns a -dictionary of the cumulative amount of ``fresh-uox`` fuel that enters -the reactor over time. We can make this dictionary non-cumulative by -setting ``is_cum = False`` as seen below. - -.. code:: ipython3 - - analysis.facility_commodity_flux(cur,agentids=[21],facility_commodities=['fresh-uox'],is_cum=False,is_outflux=False) - - - - - -.. code:: ipython3 - - analysis.facility_commodity_flux(cur,agentids=[21],facility_commodities=['fresh-uox'],is_cum=True,is_outflux=False) - -As expected, the only time that ``fresh-uox`` enters the reactor is at -times where the reactor is being refueled. - -Now, let's plot the storage of the sink over time to see what -commodities are stored in the sink. - -Let's take a look at the total mass of spent nuclear fuel stored at the -Nuclear Waste Repository. To plot, use the -``analysis.plot_in_flux_cumulative(cur, facility, title)`` function. - -.. raw:: html - -
- -**Interactive Input** Using the table below, create the following -variables. Include appropriate comments. - -.. raw:: html - -
- -+----------------+----------------------------------------------------+------------------------+ -| Variable | Value | Purpose | -+================+====================================================+========================+ -| ``facility`` | ``'NuclearRepository'`` | facility of interest | -+----------------+----------------------------------------------------+------------------------+ -| ``title`` | ``'Cumulative Isotope Inventory of Repository'`` | title of plot | -+----------------+----------------------------------------------------+------------------------+ - -.. code:: ipython3 - - facility = 'NuclearRepository' # facility of interest - title = 'Cumulative Isotope Inventory of Repository' # title of plot - - analysis.plot_commodities(cur,archetype='sink',facility_commodity=['tails','spent-uox'],title = 'Sink storage', - filename='sink',is_cum=True,is_outflux=False) - from IPython.display import Image - Image(filename='sink.png') - - - - -.. image:: output_31_0.png - - - -Now let's plot the cumulative mass of the spent nuclear fuel that is -mined from the Uranium mine. To plot the outflux of a facility, use the -analysis.plot\_out\_flux\_cumulative(cur,sender,plot title) function. - -.. code:: ipython3 - - analysis.plot_out_flux_cumulative(cur, 'UraniumMine','Cumulative Isotope Outflux of Uranium Mine') - - - - -.. image:: output_33_0.png - - -.. code:: ipython3 - - analysis.plot_out_flux_cumulative(cur, '1178MWe BRAIDWOOD-1','Cumulative Isotope Outflux of 1178MWe BRAIDWOOD-1') - - - -.. image:: output_34_0.png - - -Now let's plot the mass series and cumulative mass of the fresh nuclear -fuel that is received by the 1178MWe BRAIDWOOD-1. - -.. code:: ipython3 - - analysis.plot_in_flux(cur, '1178MWe BRAIDWOOD-1','Isotope Influx of 1178MWe BRAIDWOOD-1') - analysis.plot_in_flux_cumulative(cur, '1178MWe BRAIDWOOD-1','Cumulative Isotope Influx of 1178MWe BRAIDWOOD-1') - - - -.. image:: output_36_0.png - - - -.. image:: output_36_1.png - - -We can also find the total amount [kg] of an isotope that was used/sent -from a facility using the ``total_isotope_used`` function. For example, -if we wanted to find out how much :math:`^{235}`\ U and -:math:`^{238}`\ U was mined from the Uranium Mine, we can call: - -.. code:: ipython3 - - uranium_mined = analysis.total_isotope_used(cur, 'UraniumMine') - print("Total amount of U-235 mined:" + ' ' + str(uranium_mined['U235']) + ' ' + 'kg') - print("Total amount of U-238 mined:" + ' ' + str(uranium_mined['U238']) + ' ' + 'kg') - - - -.. parsed-literal:: - - Total amount of U-235 mined: 91599.6350365 kg - Total amount of U-238 mined: 12791612.0438 kg - - -Let's say we wanted to see the composition of the spent nuclear fuel -from the reactor. We could call ``total_isotope_used`` with ``facility`` -= ``'1178MWe BRAIDWOOD-1'`` to find out! - -.. raw:: html - -
- -**Interactive Input** Using the table below, create the following -variable. Include appropriate comments. - -.. raw:: html - -
- -+----------------+-----------------------------+------------------------+ -| Variable | Value | Purpose | -+================+=============================+========================+ -| ``facility`` | ``'1178MWe BRAIDWOOD-1'`` | facility of interest | -+----------------+-----------------------------+------------------------+ - -.. code:: ipython3 - - facility = '1178MWe BRAIDWOOD-1' # facility of interest - snf_comp = analysis.total_isotope_used(cur, facility) - snf_comp - isotopes = [item[0] for item in snf_comp.items()] - masses = [item[1] for item in snf_comp.items()] - plt.bar(isotopes,masses) - plt.xlabel('Isotopes') - plt.ylabel('Total Mass [kg]') - plt.title('SNF mass composition') - - - - -.. parsed-literal:: - - Text(0.5,1,'SNF mass composition') - - - - -.. image:: output_40_1.png - - -.. code:: ipython3 - - analysis.plot_uranium_utilization(cur) - - - -.. image:: output_41_0.png - - -.. code:: ipython3 - - fuel_dict = analysis.fuel_usage_timeseries(cur, ['fresh-uox']) - fuel_dict - analysis.stacked_bar_chart(fuel_dict, timestep, - 'Years', 'Mass[MTHM]', - 'Total Fresh-Uox Fuel Mass vs Time', - 'total_fuel', - init_year) - from IPython.display import Image - Image(filename='total_fuel.png') - - - - -.. image:: output_42_0.png - - - -.. code:: ipython3 - - # natural uranium demand - import collections - nat_u = collections.OrderedDict() - nat_u['nat_u'] = analysis.nat_u_timeseries(cur) - analysis.stacked_bar_chart(nat_u, timestep, - 'Years', 'Natural Uranium Mass', - 'Natural Uranium Demand vs Time', - 'nat_u', init_year) - from IPython.display import Image - Image(filename='nat_u.png') - - - - -.. image:: output_43_0.png - - - -Ask: Why is the orange line steeper in slope than the green line? ------------------------------------------------------------------ - -.. code:: ipython3 - - tails = cur.execute('SELECT time, sum(quantity) FROM transactions ' - 'INNER JOIN resources ON resources.resourceid = ' - 'transactions.resourceid WHERE commodity = "tails"' - ' GROUP BY time').fetchall() - - tails_array = np.array(fuel) - tails_transaction = [tail[1] for tail in tails_array] - tails_timeseries = [fuel[0] for fuel in tails_array] - - maximum_fuel_moved = np.amax(tails_array) - print('Maximum amount of tails moved during one time step: ' + str(maximum_fuel_moved)) - - analysis.plot_commodities(cur,archetype='sink',facility_commodity=['tails'],title='Tails in Sink',filename='tails',is_cum=True,is_outflux=False) - from IPython.display import Image - Image(filename='tails.png') - - -.. parsed-literal:: - - Maximum amount of tails moved during one time step: 99000.0 - - - - -.. image:: output_45_1.png - - - -Decay heat ----------- - -Using our ``spent`` fuel composition from above, lets see which isotope -causes the most decay heat! - -.. code:: ipython3 - - analysis.plot_reactor_events(cur,reactors = []) - - - - -.. image:: output_47_0.png - - -.. code:: ipython3 - - analysis.plot_commodity(cur,archetype='Sink',facility_commodity=['spent-uox'],is_outflux=False,is_cum=True) - from IPython.display import Image - Image(filename='cum_mass_spent-uoxdischarge.png') - - - - -.. image:: output_48_0.png diff --git a/source/user/tutorial/index.rst b/source/user/tutorial/index.rst index 855e5c9a6..a135cc274 100644 --- a/source/user/tutorial/index.rst +++ b/source/user/tutorial/index.rst @@ -30,7 +30,6 @@ Exercise #1 add_commod_recipe add_proto add_reg_inst - launch_cyclus run_cyclus_native add_second_reactor diff --git a/source/user/tutorial/install_launch_cyclus.rst b/source/user/tutorial/install_launch_cyclus.rst index 36e9c0e7e..3afb59c07 100644 --- a/source/user/tutorial/install_launch_cyclus.rst +++ b/source/user/tutorial/install_launch_cyclus.rst @@ -3,8 +3,6 @@ Installing and Launching Cyclus For this tutorial, the |Cyclus|, and Cycamore programs are utilized. You can install |Cyclus| using the following steps listed on the `Install Cyclus `_ page. -You can install Cycamore from the `Cycamore github repository `_. It is not required to -install these programs because there is a cloud service available to running |Cyclus| input files, as discussed -`here `_. +You can install Cycamore from the `Cycamore github repository `_.