Archetypes
- List of available agent archetypes (required once)¶
Every agent that participates in a Cyclus simulation is based on a
prototype that is formed by configuring an archetype. The
archetypes
block defines the set of archetypes that are available to a
simulation, and provides specifications that uniquely identify each archetype.
A single archetypes
block is required, and contains one or more spec
blocks. Each spec
block has these blocks in the following order:
path
(optional) - a slash-separated pathlib
(optional) - a library namename
(required) - a namealias
(optional) - a alternative name for the archetype
In addition to the unambiguous specification (as defined in
Archetype Identification and Discovery) formed by the path
, lib
, and name
, the
alias
provides an alternative name by which to refer to the archetype
elsewhere in the file. If an alias is defined, it is the only way to
refer to that archetype in other locations.
Example¶
<archetypes>
<spec>
<path>my/custom/path</path>
<lib>myAgentCollection</lib>
<name>myFirstReactorAgent</name>
<alias>ReactorAgent</alias>
</spec>
<spec>
<name>simpleSource</name>
</spec>
<spec>
<name>simpleRegion</name>
</spec>
<spec>
<name>simpleInst</name>
</spec>
</archetypes>
This example introduces four different archetypes into the simulation to be used elsewhere when defining agent prototypes. The first archetype is named myFirstReactorAgent, found in a library file such as libmyAgentCollection.so (on linux), in the filesystem path my/custom/path. All references to this archetype will use the alias ReactorAgent. The other archetypes are named simpleSource, simpleRegion, and simpleInst, all of which are found in standard locations defined in Archetype Identification and Discovery. For example, simpleSource will be found in a library file with a name such as libsimpleSource.so, in the standard Cyclus archetype path.
This is what the example above would look like if written in JSON.
{
"archetypes": {
"spec": [ {
"path": "my/custom/path",
"lib": "myAgentCollection",
"alias": "ReactorAgent" },
{"name": "simpleSource" },
{"name": "simpleRegion" },
{"name": "simpleInst" }
]
}}
And similarly, in Python:
{"archetypes": {"spec": [
{"path": "my/custom/path", "lib": "myAgentCollection", "alias": "ReactorAgent"},
{"name": "simpleSource"},
{"name": "simpleRegion"},
{"name": "simpleInst" },
]
}}
Grammar Definition¶
<element name="archetypes">
<oneOrMore>
<element name="spec">
<optional><element name="path"><text/></element></optional>
<optional><element name="lib"><text/></element></optional>
<element name="name"><text/></element>
<optional><element name="alias"><text/></element></optional>
</element>
</oneOrMore>
</element>