Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
7a3844e
remove mention of internet connection
abachma2 Oct 27, 2025
19ad825
consolidate Cyclus and Cycamore to single link
abachma2 Oct 27, 2025
e01ca79
make edits suggested in #427
abachma2 Oct 27, 2025
ce47b36
make minor revisions, per #427
abachma2 Oct 28, 2025
5eac5ec
minor revisions, per #427
abachma2 Oct 28, 2025
5f3289c
make formatting more consistent
abachma2 Oct 28, 2025
0481e5f
changes, per #427, includes some reordering
abachma2 Oct 28, 2025
b0e0aaf
remove cloud paragraph, add terminal running
abachma2 Oct 28, 2025
7d653d9
add note about insts deploying prototypes
abachma2 Oct 28, 2025
7e891e5
changes per #427
abachma2 Oct 28, 2025
70ce69e
consistent formatting in archetype names
abachma2 Oct 28, 2025
208ac71
improve consistency in inputs/formatting
abachma2 Oct 28, 2025
0342e4d
make formattting consistent, per #427
abachma2 Oct 28, 2025
7afe45d
fix typo
abachma2 Oct 28, 2025
ea3f803
changes per #427, make things consistent
abachma2 Oct 28, 2025
9fb480c
remove mention of region
abachma2 Oct 28, 2025
4650bce
correct institution name
abachma2 Oct 28, 2025
abff198
adjust text for second problem
abachma2 Oct 28, 2025
e560a4e
remove mention of institutions and regions
abachma2 Nov 19, 2025
c8c389d
change Archetype variable to Source in definition exercise
abachma2 Nov 19, 2025
37f678d
ange reg/inst names, clarify region block format
abachma2 Nov 19, 2025
0f40c3d
edit time step duration discussion
abachma2 Nov 19, 2025
9c5e41b
Apply suggestions from @gonuke code review
abachma2 Nov 19, 2025
7f2348b
change minor to no consequence for archetype order
abachma2 Nov 20, 2025
0906128
Merge branch 'source' into tutorial
abachma2 Nov 24, 2025
42723b0
clarify RegionArchetype, per @dean-krueger comment
abachma2 Nov 24, 2025
b94a433
add section about common inputs, note about recipe names
abachma2 Nov 24, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 17 additions & 7 deletions source/user/tutorial/add_arche.rst
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ to model facilities that may be at the peripheral of a problem. The Cycamore
facility archetypes are:

* **Source:** `Source <http://fuelcycle.org/user/cycamoreagents.html#cycamore-source>`_
is a generic source of material may fill the role of any
is a generic source of material that may fill the role of any
facility that produces fresh material. Depending on how much of the fuel
cycle a user wants to model explicitly, this could fill the role of a uranium
mine, an enrichment facility, a fuel fabrication facility, import of a commodity from
Expand All @@ -70,16 +70,23 @@ facility archetypes are:
that permanently holds used nuclear material. Depending on how much of the
fuel cycle a user wants to model explicitly, this could fill the role of a
geologic repository, an interim storage facility, export of a commodity to outside simulated facilities, etc.
* **Mixer:** `Mixer <https://fuelcycle.org/user/cycamoreagents.html#cycamore-mixer>`_ is
* **Storage:** `Storage <https://fuelcycle.org/user/cycamoreagents.html#cycamore-storage>`_
*


Activity: Discover the Available Archetypes
===========================================
If using |Cyclus| on your machine, the archetypes available to you are only those that you have downloaded.
To check which archetypes are downloaded on your machine run the command ``cyclus -a`` from your terminal.
To check which archetypes are downloaded on your machine run the command ``cyclus -a`` from your terminal. You will notice that there are more archetypes listed than the ones we
have discussed. This is because we have only discussed the facility archetypes so far,
and Cycamore also has `region and institution archetypes <https://fuelcycle.org/user/tutorial/add_reg_inst.html#concept-regions-institutions>`_, which we will discuss later.

Note: using this command will only show the
`C++-based archetypes <https://fuelcycle.org/arche/tutorial_cpp/index.html>`_ that
are available. It will not show any `python-based archetypes <https://fuelcycle.org/arche/tutorial_py/index.html>`_.


If you are not running |Cyclus| on your machine, the archetypes available to you include those in Cycamore, which
can be found on the `archetypes
<http://fuelcycle.org/user/cycamoreagents.html>`_ webpage.


What archetypes can you see yourself using in your research?
Expand Down Expand Up @@ -125,10 +132,13 @@ The ``archetype`` block is located after the simulation control block and takes
<lib>lib2</lib>
<name>arch_2</name>
</spec>
...
</archetypes>

where ``lib`` is the library in which the archetype came from and ``name`` is
the archetype name. Let's build our archetypes!
the archetype name. You need one `spec` block in the archetypes section
for each archetype you use in your simulation.
Let's build the archetypes block in our input file.
Using the template below and the table below,
fill in the template with the variables listed in the table below.

Expand Down Expand Up @@ -200,7 +210,7 @@ Once complete, your ``archetypes`` block should look like:
</spec>
</archetypes>

Once complete, append the archetypes section under the control section of input file [#f1]_.
The order of the archetypes in this block is of no consequence. Once complete, append the archetypes section under the control section of input file [#f1]_.

.. rubric:: Footnotes

Expand Down
16 changes: 8 additions & 8 deletions source/user/tutorial/add_arche_commod_recipe.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,30 +2,30 @@ Getting Started on Recycle
============================

This exercise will start with some simple activities based on what you learned
in the first exercise.
in the first exercise, using the second input file you made.

Activity: Adding Archetypes
-----------------------------

We will need two additional archetypes:

1. Add the *cycamore FuelFab* archetype
2. Add the *cycamore Separations* archetype
1. Add the ``Cycamore::FuelFab`` archetype
2. Add the ``Cycamore::Separations`` archetype

Activity: Adding Commodities
-----------------------------

We will need 4 additional commodities:

1. Fresh-MOX-Fuel
2. Used-MOx-Fuel
3. Separated-Fissile
4. Separated-Waste
1. fresh_mox
2. used_mox
3. Separated_Fissile
4. Separated_Waste

Activity: Adding Recipes
--------------------------

We'll continue with very approximate recipes by adding a single recipe for Used-MOX-Fuel-4:
We'll continue with very approximate recipes by adding a single recipe for Used-MOX-Fuel:

+------------+-----------------+
| U-235 | 0.002 |
Expand Down
23 changes: 11 additions & 12 deletions source/user/tutorial/add_commod_recipe.rst
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ Concept: Commodities
++++++++++++++++++++

|Cyclus| exchanges resources between facilities using a market-like mechanism
called the **dynamic resource exchange (DRE)**. The concept of a **commodity** is
called the `**dynamic resource exchange (DRE)** <https://fuelcycle.org/arche/dre.html>`_.
The concept of a **commodity** is
used to simply indicate which facilities may be interested in trading with
each other through the DRE. A commodity is therefore nothing more than a
unique name that is used to define a set of producers and consumers of a
Expand All @@ -22,18 +23,15 @@ Any potential resource transfer (i.e., a bid or a request) may be
denoted as **exclusive**. An exclusive transfer excludes partial fulfillment;
it must either be met fully or not at all. This mode supports concepts
such as the trading of individual reactor assemblies. In combination
with the notion of mutual requests, complex instances of supply and
with the notion of mutual requests (one request that can be met through multiple
commodities), complex instances of supply and
demand are enabled.

Finally, requesting facilities, institutions and
regions may apply **preferences** to each potential request-bid pairing
Finally, requesting facilities may apply **preferences** to each potential request-bid pairing
based on the proposed resource transfer. Facilities can apply arbitrary
complex logic to **rank the bids** that they have received, whether based on
the quantity available in each bid or on the quality of each bid, and
the consequent implications of the physics behavior of that facility. In
addition, an institution can apply a higher preference to a partner to
which it is congenial; similarly, a region may negate any transfers of
material which have a higher uranium enrichment than is allowable.
the consequent implications of the physics behavior of that facility.

For example, the flow graph below shows three suppliers (left) and two
consumers (right), and the potential flows of various commodities among
Expand Down Expand Up @@ -167,7 +165,7 @@ Concept: Recipes
Most commodities are materials, which have a quantity and an
isotopic composition.
Recipes are the isotopic composition of a certain material. For
example, u_ore has an isotropic composition of 0.711% :math:`^{235}`\ U and
example, u_ore has an isotopic composition of 0.711% :math:`^{235}`\ U and
99.284% :math:`^{238}`\ U. The recipe section of a |Cyclus| input file is
typically located at the end of the input and is of the form:

Expand Down Expand Up @@ -199,9 +197,10 @@ For example, :math:`^{235}`\ U can be expressed as:
For more details, reference the `Recipe definition
<../input_specs/recipe.html>`_ page.

First, we can declare the isotopic compositions of the fresh and spent
fuel. We'll be using simple recipes: fresh fuel is 4.0% :math:`^{235}`\ U by mass,
remainder U-238. Spent fuel is 1.1% :math:`^{235}`\ U, 94.0% :math:`^{238}`\ U, 0.9% :math:`^{239}`\ Pu, and
For this input file, we need to define three recipes: natural uranium, fresh fuel,
and spent fuel. We'll be using simple recipes: natural uranium is 0.711%
:math:`^{235}`\ U by mass, remainder :math:`^{238}`\ U, fresh fuel is 4.0% :math:`^{235}`\ U by mass,
remainder U-238, and spent fuel is 1.1% :math:`^{235}`\ U, 94.0% :math:`^{238}`\ U, 0.9% :math:`^{239}`\ Pu, and
4.0% :math:`^{137}`\ Cs.

Activity: Creating a Recipe
Expand Down
31 changes: 16 additions & 15 deletions source/user/tutorial/add_deploy.rst
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ Deploying New Facilities
==========================

Often in fuel cycle analysis, transition scenarios are considered. These ask
questins like: "How does the
commissioning and decommissioning of reactors affect electrity production or
questions like: "How does the
commissioning and decommissioning of reactors affect electricity production or
material transactions?". Transition analysis will
require an institution that can deploy additional facilities at given time
steps: the ``cycamore DeployInst`` archetype. This is the simplest institution
Expand All @@ -12,7 +12,8 @@ new facilities, in which the user simply defines the times at which new agents
should be deployed as copies of available prototypes.

In this case, we will keep the current institutions and add another
institution that will deploy more facilities over time.
institution that will deploy more facilities over time, which can be used
to meet a growing electricity demand in a simulation.

Example: DeployInst
--------------------------------
Expand Down Expand Up @@ -66,27 +67,27 @@ We will now use this to add the institution for ``DeployInst``.

where:

* prototype: Ordered list of prototypes to build
* prototypes: Ordered list of prototypes to build
* build_times: Time step on which to deploy agents given in prototype list
* n_build: Number of each prototype given in prototype list to build

Activity: Add a New Institution
++++++++++++++++++++++++++++++++++++++++++
--------------------------------

Using the table below and the DeployInst template above, fill out the commodities
template.

+-------------+-------------+---------------------+
+-----------------------+-------------+-----------+
| Prototype | build_times | n_build |
+=============+=============+=====================+
+=======================+=============+===========+
| UraniumMine | 1 | 1 |
+-------------+-------------+---------------------+
+-----------------------+-------------+-----------+
| FuelFab | 1 | 1 |
+-------------+-------------+---------------------+
+-----------------------+-------------+-----------+
| 1178MWe BRAIDWOOD_1 | 2 | 1 |
+-------------+-------------+---------------------+
+-----------------------+-------------+-----------+
| 1000MWe LIGHTWATER_1 | 3 | 1 |
+-------------+-------------+---------------------+
+-----------------------+-------------+-----------+

Using the prototype facilities already created, the new institution should
look like the following:
Expand Down Expand Up @@ -121,16 +122,16 @@ look like the following:
</config>
</institution>

The above institution will create 1 ``UraniumMine`` and 1 ``FuelFab`` facility on
The above institution will deploy 1 ``UraniumMine`` and 1 ``FuelFab`` facility on
time step 1. The next time step will deploy the ``1178MWe BRAIDWOOD_1`` reactor
prototype. And finally, at time step 3, the ``1000We LIGHTWATER_1`` will be deployed.
This institution block goes inside the Region block, with the previously created
insitutions blocks.
institution blocks.

**ExampleInstitution** is a placeholder for your institution name, and in this scenario
``ExampleInstitution`` is a placeholder for your institution name, and in this scenario
only one of each prototype will be deployed since ``n_build`` has a value of 1 for each.

This example is now complete. Save your file as the desired file name (with ``.xml``
extension) and run your code through |Cyclus|. If your simulation runs into errors,
sample files can be found `here <https://doi.org/10.5281/zenodo.4557613>`_ under
``input_deployinst.xml`` or ``ouput_deployinst.sqlite``.
``input_deployinst.xml`` or ``output_deployinst.sqlite``.
26 changes: 13 additions & 13 deletions source/user/tutorial/add_fab.rst
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
Adding a Stream Mixing Fuel Fabrication Facility
==================================================

The cycamore FuelFab archetype uses the _equivalence method_ to mix streams of
The cycamore FuelFab archetype uses the *equivalence method* to mix streams of
fissile material with so-called "filler" material in an attempt to match
neutronics of the
requested material. More details about the archetype and the state
Expand All @@ -19,17 +19,17 @@ archetype:
<config>
<FuelFab>
<fill_commods>
<val>_______</val>
<val>[string]</val>
</fill_commods>
<fill_recipe>_______</fill_recipe>
<fill_size>_______</fill_size>
<fill_recipe>[string]</fill_recipe>
<fill_size>[double]</fill_size>
<fiss_commods>
<val>_______</val>
<val>[string]</val>
</fiss_commods>
<fiss_size>_______</fiss_size>
<spectrum>_______</spectrum>
<outcommod>_______</outcommod>
<throughput>_______</throughput>
<fiss_size>[double]</fiss_size>
<spectrum>[string (`fission_spectrum_ave` or `thermal`)]</spectrum>
<outcommod>[string]</outcommod>
<throughput>[double]</throughput>
</FuelFab>
</config>
</facility>
Expand All @@ -42,11 +42,11 @@ plutonium and natural uranium into MOX fuel:
* Filler stream commodity: ``u_ore``
* Filler stream recipe: ``nat_u``
* Filler stream inventory capacity: 1000 tonnes
* Fissile stream commodity: Separated_Fissile
* Fissile stream commodity: ``Separated_Fissile``
* Fissile stream inventory capacity: 5 tonnes
* Output Commodity: Fresh_MOX_Fuel
* Output Commodity: ``fresh_mox``
* Maximum Throughput: 2 tonnes/timestep
* Specturm type: "thermal"
* Spectrum type: ``thermal``

Filling in the template, the input block looks like:

Expand All @@ -62,7 +62,7 @@ Filling in the template, the input block looks like:
<fiss_commods><val>Separated_Fissile</val></fiss_commods>
<fiss_size>5000</fiss_size>
<spectrum>thermal</spectrum>
<outcommod>Fresh_MOX_Fuel</outcommod>
<outcommod>fresh_mox</outcommod>
<throughput>2000</throughput>
</FuelFab>
</config>
Expand Down
Loading