Cyclus Archetypes

This is a collection of archetypes found in the agents module that comes with Cyclus itself.

:agents:Source

A minimum implementation source facility that provides a commodity with a given capacity

State Variables

commod:

std::string, shape=[-1]

commodity that the source facility supplies

schematype:

token

XML:

<commod>[outcommodity]</commod>

JSON:

{"commod": "<required>"}  # outcommodity

Python:

{"commod": ""}  # outcommodity, required
recipe_name:

std::string, optional (default=””), shape=[-1]

Recipe name for source facility’s commodity.If empty, source supplies material with requested compositions.

schematype:

token

XML:

<recipe_name>[recipe]</recipe_name>

JSON:

{"recipe_name": ""}  # recipe

Python:

{"recipe_name": ''}  # recipe, optional
capacity:

double, shape=[-1]

amount of commodity that can be supplied at each time step

range:

[0.0, 1e+299]

XML:

<capacity>[double]</capacity>

JSON:

{"capacity": "<required>"}  # double

Python:

{"capacity": 0.0}  # double, required

Other Info

  • Full Archetype Name: cyclus::Source

  • Simulation Entity Type: facility

  • Interfaces: [‘cyclus::Facility’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Facility’, ‘cyclus::Ider’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’, ‘cyclus::Trader’]

XML Input Schema

<interleave>
    <element name="commod">
        <data type="token"/>
    </element>
    <optional>
        <element name="recipe_name">
            <data type="token"/>
        </element>
    </optional>
    <element name="capacity">
        <data type="double"/>
    </element>
</interleave>

:agents:Sink

A minimum implementation sink facility that accepts specified amounts of commodities from other agents

State Variables

in_commods:

std::vector<std::string>, shape=[-1, -1]

commodities that the sink facility accepts

XML:

<in_commods>
  <val>[incommodity]</val>
  <val>[incommodity]</val>
  ...
</in_commods>

JSON:

{"in_commods":  {"val": [
   "<required>",
   "<required>",
   ...
]}}

Python:

{"in_commods":  {"val": [
   "",
   "",
   ...
]}}
recipe_name:

std::string, optional (default=””), shape=[-1]

Name of recipe to request.If empty, sink requests material no particular composition.

XML:

<recipe_name>[recipe]</recipe_name>

JSON:

{"recipe_name": ""}  # recipe

Python:

{"recipe_name": ''}  # recipe, optional
max_inv_size:

double, optional (default=1e+299), shape=[-1]

total maximum inventory size of sink facility

XML:

<max_inv_size>[double]</max_inv_size>

JSON:

{"max_inv_size": 1e+299}  # double

Python:

{"max_inv_size": 1e+299}  # double, optional
capacity:

double, shape=[-1]

capacity the sink facility can accept at each time step

range:

[0.0, 1e+299]

XML:

<capacity>[double]</capacity>

JSON:

{"capacity": "<required>"}  # double

Python:

{"capacity": 0.0}  # double, required

Other Info

  • Full Archetype Name: cyclus::Sink

  • Simulation Entity Type: facility

  • Interfaces: [‘cyclus::Facility’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Facility’, ‘cyclus::Ider’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’, ‘cyclus::Trader’]

XML Input Schema

<interleave>
    <element name="in_commods">
        <oneOrMore>
            <element name="val">
                <data type="string"/>
            </element>
        </oneOrMore>
    </element>
    <optional>
        <element name="recipe_name">
            <data type="string"/>
        </element>
    </optional>
    <optional>
        <element name="max_inv_size">
            <data type="double"/>
        </element>
    </optional>
    <element name="capacity">
        <data type="double"/>
    </element>
</interleave>

:agents:NullRegion

A region that owns the simulation’s institutions but exhibits null behavior. No parameters are given when using the null region.

Other Info

  • Full Archetype Name: cyclus::NullRegion

  • Simulation Entity Type: region

  • Interfaces: [‘cyclus::Region’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Ider’, ‘cyclus::Region’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’]

XML Input Schema

<text/>

:agents:NullInst

An instition that owns facilities in the simulation but exhibits null behavior. No parameters are given when using the null institution.

Other Info

  • Full Archetype Name: cyclus::NullInst

  • Simulation Entity Type: institution

  • Interfaces: [‘cyclus::Institution’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Ider’, ‘cyclus::Institution’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’]

XML Input Schema

<text/>

:agents:KFacility

A facility designed for integration tests that both provides and consumes commodities. It changes its request and offer amounts based on a power law with respect to time.

State Variables

in_commod:

std::string, shape=[-1]

commodity that the k-facility consumes

schematype:

token

XML:

<in_commod>[incommodity]</in_commod>

JSON:

{"in_commod": "<required>"}  # incommodity

Python:

{"in_commod": ""}  # incommodity, required
recipe_name:

std::string, shape=[50]

recipe name for the k-facility’s in-commodity

schematype:

token

XML:

<recipe_name>[recipe]</recipe_name>

JSON:

{"recipe_name": "<required>"}  # recipe

Python:

{"recipe_name": ""}  # recipe, required
out_commod:

std::string, shape=[-1]

commodity that the k-facility supplies

schematype:

token

XML:

<out_commod>[outcommodity]</out_commod>

JSON:

{"out_commod": "<required>"}  # outcommodity

Python:

{"out_commod": ""}  # outcommodity, required
in_capacity:

double, shape=[-1]

number of commodity units that can be taken at each timestep (infinite capacity can be represented by a very large number)

XML:

<in_capacity>[double]</in_capacity>

JSON:

{"in_capacity": "<required>"}  # double

Python:

{"in_capacity": 0.0}  # double, required
out_capacity:

double, shape=[-1]

number of commodity units that can be supplied at each timestep (infinite capacity can be represented by a very large number)

XML:

<out_capacity>[double]</out_capacity>

JSON:

{"out_capacity": "<required>"}  # double

Python:

{"out_capacity": 0.0}  # double, required
current_capacity:

double, optional (default=0), shape=[-1]

number of output commodity units that can be supplied at the current time step (infinite capacity can be represented by a very large number )

XML:

<current_capacity>[double]</current_capacity>

JSON:

{"current_capacity": 0}  # double

Python:

{"current_capacity": 0}  # double, optional
max_inv_size:

double, optional (default=1e+299), shape=[-1]

total maximum inventory size of the k-facility

XML:

<max_inv_size>[double]</max_inv_size>

JSON:

{"max_inv_size": 1e+299}  # double

Python:

{"max_inv_size": 1e+299}  # double, optional
k_factor_in:

double, shape=[-1]

conversion factor that governs the behavior of the k-facility’s input commodity capacity

XML:

<k_factor_in>[double]</k_factor_in>

JSON:

{"k_factor_in": "<required>"}  # double

Python:

{"k_factor_in": 0.0}  # double, required
k_factor_out:

double, shape=[-1]

conversion factor that governs the behavior of the k-facility’s output commodity capacity

XML:

<k_factor_out>[double]</k_factor_out>

JSON:

{"k_factor_out": "<required>"}  # double

Python:

{"k_factor_out": 0.0}  # double, required

Other Info

  • Full Archetype Name: cyclus::KFacility

  • Simulation Entity Type: facility

  • Interfaces: [‘cyclus::Facility’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Facility’, ‘cyclus::Ider’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’, ‘cyclus::Trader’]

XML Input Schema

<interleave>
    <element name="in_commod">
        <data type="token"/>
    </element>
    <element name="recipe_name">
        <data type="token"/>
    </element>
    <element name="out_commod">
        <data type="token"/>
    </element>
    <element name="in_capacity">
        <data type="double"/>
    </element>
    <element name="out_capacity">
        <data type="double"/>
    </element>
    <optional>
        <element name="current_capacity">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="max_inv_size">
            <data type="double"/>
        </element>
    </optional>
    <element name="k_factor_in">
        <data type="double"/>
    </element>
    <element name="k_factor_out">
        <data type="double"/>
    </element>
</interleave>

:agents:Predator

A facility that represents predators in the Lotka-Volterra integration tests

State Variables

commod:

std::string, shape=[-1]

commodity that the predator supplies

schematype:

token

XML:

<commod>[outcommodity]</commod>

JSON:

{"commod": "<required>"}  # outcommodity

Python:

{"commod": ""}  # outcommodity, required
prey:

std::string, shape=[-1]

prey that the predator hunts

schematype:

token

XML:

<prey>[incommodity]</prey>

JSON:

{"prey": "<required>"}  # incommodity

Python:

{"prey": ""}  # incommodity, required
full:

double, optional (default=1), shape=[-1]

how many units of prey a predator consumes until it is satisfied

XML:

<full>[double]</full>

JSON:

{"full": 1}  # double

Python:

{"full": 1}  # double, optional
hunt_freq:

int, optional (default=1), shape=[-1]

how often a predator needs to hunt

XML:

<hunt_freq>[int]</hunt_freq>

JSON:

{"hunt_freq": 1}  # int

Python:

{"hunt_freq": 1}  # int, optional
hunt_cap:

double, optional (default=1), shape=[-1]

how many units of prey a predator can catch during a hunt

XML:

<hunt_cap>[double]</hunt_cap>

JSON:

{"hunt_cap": 1}  # double

Python:

{"hunt_cap": 1}  # double, optional
success:

double, optional (default=1), shape=[-1]

fraction of hunting success on a scale from 0 to 1

XML:

<success>[double]</success>

JSON:

{"success": 1}  # double

Python:

{"success": 1}  # double, optional
consumed:

double, optional (default=0), shape=[-1]

how many units of prey consumed per time step

XML:

<consumed>[double]</consumed>

JSON:

{"consumed": 0}  # double

Python:

{"consumed": 0}  # double, optional
hunt_factor:

bool, optional (default=0), shape=[-1]

whether or not to base hunting success on relative predator/prey populations

XML:

<hunt_factor>[boolean]</hunt_factor>

JSON:

{"hunt_factor": 0}  # boolean

Python:

{"hunt_factor": False}  # boolean, optional
age:

int, optional (default=0), shape=[-1]

age of predator at beginning of simulation

XML:

<age>[int]</age>

JSON:

{"age": 0}  # int

Python:

{"age": 0}  # int, optional
lifespan:

int, optional (default=1), shape=[-1]

how long a predator lives

XML:

<lifespan>[int]</lifespan>

JSON:

{"lifespan": 1}  # int

Python:

{"lifespan": 1}  # int, optional
dead:

bool, optional (default=0), shape=[-1]

flag for whether predator is currently dead

XML:

<dead>[boolean]</dead>

JSON:

{"dead": 0}  # boolean

Python:

{"dead": False}  # boolean, optional
nchildren:

double, optional (default=1), shape=[-1]

number of predator children born at each birthing instance

XML:

<nchildren>[double]</nchildren>

JSON:

{"nchildren": 1}  # double

Python:

{"nchildren": 1}  # double, optional
birth_and_death:

bool, optional (default=0), shape=[-1]

whether or not simultaneous birth and death are allowed (i.e., can a facility give birth and die in the same time step?)

XML:

<birth_and_death>[boolean]</birth_and_death>

JSON:

{"birth_and_death": 0}  # boolean

Python:

{"birth_and_death": False}  # boolean, optional

Other Info

  • Full Archetype Name: cyclus::Predator

  • Simulation Entity Type: facility

  • Interfaces: [‘cyclus::Facility’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Facility’, ‘cyclus::Ider’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’, ‘cyclus::Trader’]

XML Input Schema

<interleave>
    <element name="commod">
        <data type="token"/>
    </element>
    <element name="prey">
        <data type="token"/>
    </element>
    <optional>
        <element name="full">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="hunt_freq">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="hunt_cap">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="success">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="consumed">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="hunt_factor">
            <data type="boolean"/>
        </element>
    </optional>
    <optional>
        <element name="age">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="lifespan">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="dead">
            <data type="boolean"/>
        </element>
    </optional>
    <optional>
        <element name="nchildren">
            <data type="double"/>
        </element>
    </optional>
    <optional>
        <element name="birth_and_death">
            <data type="boolean"/>
        </element>
    </optional>
</interleave>

:agents:Prey

A facility that represents prey in the Lotka-Volterra integration tests

State Variables

commod:

std::string, shape=[-1]

schematype:

token

XML:

<commod>[outcommodity]</commod>

JSON:

{"commod": "<required>"}  # outcommodity

Python:

{"commod": ""}  # outcommodity, required
age:

int, optional (default=0), shape=[-1]

age of prey at start of simulation

XML:

<age>[int]</age>

JSON:

{"age": 0}  # int

Python:

{"age": 0}  # int, optional
dead:

bool, optional (default=0), shape=[-1]

flag for whether prey is currently dead

XML:

<dead>[boolean]</dead>

JSON:

{"dead": 0}  # boolean

Python:

{"dead": False}  # boolean, optional
nchildren:

int, optional (default=1), shape=[-1]

number of children born at each birthing instance

XML:

<nchildren>[int]</nchildren>

JSON:

{"nchildren": 1}  # int

Python:

{"nchildren": 1}  # int, optional
birth_freq:

int, optional (default=1), shape=[-1]

number of time steps between birth of children

XML:

<birth_freq>[int]</birth_freq>

JSON:

{"birth_freq": 1}  # int

Python:

{"birth_freq": 1}  # int, optional
birth_and_death:

bool, optional (default=1), shape=[-1]

whether or not simultaneous birth and death are allowed (i.e., can a facility give birth and die in the same time step?)

XML:

<birth_and_death>[boolean]</birth_and_death>

JSON:

{"birth_and_death": 1}  # boolean

Python:

{"birth_and_death": True}  # boolean, optional

Other Info

  • Full Archetype Name: cyclus::Prey

  • Simulation Entity Type: facility

  • Interfaces: [‘cyclus::Facility’]

  • All Interfaces: [‘cyclus::Agent’, ‘cyclus::Facility’, ‘cyclus::Ider’, ‘cyclus::StateWrangler’, ‘cyclus::TimeListener’, ‘cyclus::Trader’]

XML Input Schema

<interleave>
    <element name="commod">
        <data type="token"/>
    </element>
    <optional>
        <element name="age">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="dead">
            <data type="boolean"/>
        </element>
    </optional>
    <optional>
        <element name="nchildren">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="birth_freq">
            <data type="int"/>
        </element>
    </optional>
    <optional>
        <element name="birth_and_death">
            <data type="boolean"/>
        </element>
    </optional>
</interleave>