Merge pull request #2213 from paulromano/remove-relaxng

Remove RELAX NG schema and openmc-validate-xml script
This commit is contained in:
Ethan Peterson 2022-09-27 13:47:44 -04:00 committed by GitHub
commit 654ae71250
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 2 additions and 3392 deletions

View file

@ -525,7 +525,6 @@ install(EXPORT openmc-targets
NAMESPACE OpenMC::
DESTINATION ${INSTALL_CONFIGDIR})
install(DIRECTORY src/relaxng DESTINATION ${CMAKE_INSTALL_DATADIR}/openmc)
install(FILES
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfig.cmake"
"${CMAKE_BINARY_DIR}${CMAKE_FILES_DIRECTORY}/OpenMCConfigVersion.cmake"

View file

@ -49,14 +49,6 @@ following steps should be followed to make changes to user input:
written out to the statepoint or summary files and that the
:class:`openmc.StatePoint` and :class:`openmc.Summary` classes read them in.
7. Finally, a set of `RELAX NG`_ schemas exists that enables validation of input
files. You should modify the RELAX NG schema for the file you changed. The
easiest way to do this is to change the `compact syntax`_ file
(e.g. ``src/relaxng/geometry.rnc``) and then convert it to regular XML syntax
using trang_::
trang geometry.rnc geometry.rng
For most user input additions and changes, it is simple enough to follow a
"monkey see, monkey do" approach. When in doubt, contact your nearest OpenMC
developer or send a message to the `developers mailing list`_.
@ -65,7 +57,4 @@ developer or send a message to the `developers mailing list`_.
.. _property attribute: https://docs.python.org/3.6/library/functions.html#property
.. _XML Schema Part 2: http://www.w3.org/TR/xmlschema-2/
.. _boolean: http://www.w3.org/TR/xmlschema-2/#boolean
.. _RELAX NG: https://relaxng.org/
.. _compact syntax: https://relaxng.org/compact-tutorial-20030326.html
.. _trang: https://relaxng.org/jclark/trang.html
.. _developers mailing list: https://groups.google.com/forum/?fromgroups=#!forum/openmc-dev

View file

@ -75,10 +75,7 @@ person. The nested tags *firstname*, *lastname*, *age*, and *occupation*
indicate characteristics about the person being described.
In much the same way, OpenMC input uses XML tags to describe the geometry, the
materials, and settings for a Monte Carlo simulation. Note that because the XML
files have a well-defined structure, they can be validated using the
:ref:`scripts_validate` script or using :ref:`Emacs nXML mode
<usersguide_nxml>`.
materials, and settings for a Monte Carlo simulation.
Creating Input Files
--------------------

View file

@ -545,8 +545,7 @@ distributions.
Uncertainties are used for decay data in the :mod:`openmc.data` module.
`lxml <https://lxml.de/>`_
lxml is used for the :ref:`scripts_validate` script and various other
parts of the Python API.
lxml is used for various parts of the Python API.
.. admonition:: Optional
:class: note
@ -590,31 +589,5 @@ wrapper is used when installing h5py:
CC=<path to mpicc> HDF5_MPI=ON HDF5_DIR=<path to HDF5> pip install --no-binary=h5py h5py
.. _usersguide_nxml:
-----------------------------------------------------
Configuring Input Validation with GNU Emacs nXML mode
-----------------------------------------------------
The `GNU Emacs`_ text editor has a built-in mode that extends functionality for
editing XML files. One of the features in nXML mode is the ability to perform
real-time `validation`_ of XML files against a `RELAX NG`_ schema. The OpenMC
source contains RELAX NG schemas for each type of user input file. In order for
nXML mode to know about these schemas, you need to tell emacs where to find a
"locating files" description. Adding the following lines to your ``~/.emacs``
file will enable real-time validation of XML input files:
.. code-block:: common-lisp
(require 'rng-loc)
(add-to-list 'rng-schema-locating-files "~/openmc/schemas.xml")
Make sure to replace the last string on the second line with the path to the
schemas.xml file in your own OpenMC source directory.
.. _GNU Emacs: http://www.gnu.org/software/emacs/
.. _validation: https://en.wikipedia.org/wiki/XML_validation
.. _RELAX NG: https://relaxng.org/
.. _ctest: https://cmake.org/cmake/help/latest/manual/ctest.1.html
.. _Conda: https://conda.io/en/latest/
.. _pip: https://pip.pypa.io/en/stable/

View file

@ -171,34 +171,6 @@ the latest HDF5-based format.
-i IN, --input IN Input XML file
-o OUT, --output OUT Output file in HDF5 format
.. _scripts_validate:
-----------------------
``openmc-validate-xml``
-----------------------
Input files can be checked before executing OpenMC using the
``openmc-validate-xml`` script which is installed alongside the Python API. Two
command line arguments can be set when running ``openmc-validate-xml``:
-i, --input-path Location of OpenMC input files.
-r, --relaxng-path Location of OpenMC RelaxNG files
If the RelaxNG path is not set, the script will search for these files because
it expects that the user is either running the script located in the install
directory ``bin`` folder or in ``src/utils``. Once executed, it will match
OpenMC XML files with their RelaxNG schema and check if they are valid. Below
is a table of the messages that will be printed after each file is checked.
======================== ===================================
Message Description
======================== ===================================
[XML ERROR] Cannot parse XML file.
[NO RELAXNG FOUND] No RelaxNG file found for XML file.
[NOT VALID] XML file does not match RelaxNG.
[VALID] XML file matches RelaxNG.
======================== ===================================
.. _scripts_voxel:
---------------------------

View file

@ -1,9 +0,0 @@
<?xml version="1.0"?>
<locatingRules xmlns="http://thaiopensource.com/ns/locating-rules/1.0">
<documentElement localName="geometry" uri="src/relaxng/geometry.rnc"/>
<documentElement localName="materials" uri="src/relaxng/materials.rnc"/>
<documentElement localName="settings" uri="src/relaxng/settings.rnc"/>
<documentElement localName="tallies" uri="src/relaxng/tallies.rnc"/>
<documentElement localName="plots" uri="src/relaxng/plots.rnc"/>
<documentElement localName="cross_sections" uri="src/relaxng/cross_sections.rnc"/>
</locatingRules>

View file

@ -1,102 +0,0 @@
#!/usr/bin/env python3
import os
import sys
import glob
import lxml.etree as etree
from optparse import OptionParser
def validate_xml(inputs, relaxng):
# Colored output
if sys.stdout.isatty():
OK = '\033[92m'
FAIL = '\033[91m'
NOT_FOUND = '\033[93m'
ENDC = '\033[0m'
BOLD = '\033[1m'
else:
OK = ''
FAIL = ''
ENDC = ''
BOLD = ''
NOT_FOUND = ''
# Get absolute paths
if relaxng is not None:
relaxng_path = os.path.abspath(relaxng)
if inputs is not None:
inputs_path = os.path.abspath(inputs)
# Search for relaxng path if not set
if relaxng is None:
xml_validate_path = os.path.abspath(os.path.dirname(sys.argv[0]))
if "bin" in xml_validate_path:
relaxng_path = os.path.join(xml_validate_path, "..", "share", "relaxng")
elif os.path.join("src", "utils") in xml_validate_path:
relaxng_path = os.path.join(xml_validate_path, "..", "relaxng")
else:
raise Exception("Set RelaxNG path with -r command line option.")
if not os.path.exists(relaxng_path):
raise Exception(f"RelaxNG path: {relaxng_path} does not exist, set "
"with -r command line option.")
# Make sure there are .rng files in RelaxNG path
rng_files = glob.glob(os.path.join(relaxng_path, "*.rng"))
if len(rng_files) == 0:
raise Exception(f"No .rng files found in RelaxNG path: {relaxng_path}.")
# Get list of xml input files
xml_files = glob.glob(os.path.join(inputs_path, "*.xml"))
if len(xml_files) == 0:
raise Exception(f"No .xml files found at input path: {inputs_path}.")
# Begin loop around input files
for xml_file in xml_files:
text = f"Validating {os.path.basename(xml_file)}"
print(text + '.'*(30 - len(text)), end="")
# Validate the XML file
try:
xml_tree = etree.parse(xml_file)
except etree.XMLSyntaxError as e:
print(BOLD + FAIL + '[XML ERROR]' + ENDC)
print(f" {e}")
continue
# Get xml_filename prefix
xml_prefix = os.path.basename(xml_file)
xml_prefix = xml_prefix.split(".")[0]
# Search for rng file
rng_file = os.path.join(relaxng_path, xml_prefix + ".rng")
if rng_file in rng_files:
# read in RelaxNG
relaxng_doc = etree.parse(rng_file)
relaxng = etree.RelaxNG(relaxng_doc)
# validate xml file again RelaxNG
try:
relaxng.assertValid(xml_tree)
print(BOLD + OK + '[VALID]' + ENDC)
except (etree.DocumentInvalid, TypeError) as e:
print(BOLD + FAIL + '[NOT VALID]' + ENDC)
print(f" {e}")
# RNG file does not exist
else:
print(BOLD + NOT_FOUND + '[NO RELAXNG FOUND]' + ENDC)
if __name__ == "__main__":
# Command line parsing
parser = OptionParser()
parser.add_option('-r', '--relaxng-path', dest='relaxng',
help="Path to RelaxNG files.")
parser.add_option('-i', '--input-path', dest='inputs', default=os.getcwd(),
help="Path to OpenMC input files." )
(options, args) = parser.parse_args()
validate_xml(inputs=options.inputs, relaxng=options.relaxng)

View file

@ -1,12 +0,0 @@
element cross_sections {
element library {
(element materials { xsd:string } |
attribute materials { xsd:string }) &
(element type { xsd:string } |
attribute type { xsd:string }) &
(element path { xsd:string } |
attribute path { xsd:string })
}* &
element directory { xsd:string { maxLength = "255" } }?
}

View file

@ -1,42 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="cross_sections" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<zeroOrMore>
<element name="library">
<interleave>
<choice>
<element name="materials">
<data type="string"/>
</element>
<attribute name="materials">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="type">
<data type="string"/>
</element>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="path">
<data type="string"/>
</element>
<attribute name="path">
<data type="string"/>
</attribute>
</choice>
</interleave>
</element>
</zeroOrMore>
<optional>
<element name="directory">
<data type="string">
<param name="maxLength">255</param>
</data>
</element>
</optional>
</interleave>
</element>

View file

@ -1,55 +0,0 @@
element geometry {
element cell {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string { maxLength="52" } } |
attribute name { xsd:string { maxLength="52" } })? &
(element universe { xsd:int } | attribute universe { xsd:int })? &
(
(element fill { xsd:int } | attribute fill { xsd:int }) |
(element material { list { ( xsd:int | "void" )+ } } |
attribute material { list { ( xsd:int | "void" )+ } })
) &
(element temperature { list { xsd:double+ } } |
attribute temperature { list { xsd:double+ } } )? &
(element region { xsd:string } | attribute region { xsd:string })? &
(element rotation { list { xsd:double+ } } | attribute rotation { list { xsd:double+ } })? &
(element translation { list { xsd:double+ } } | attribute translation { list { xsd:double+ } })?
}*
& element surface {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string { maxLength="52" } } |
attribute name { xsd:string { maxLength="52" } })? &
(element type { xsd:string { maxLength = "15" } } |
attribute type { xsd:string { maxLength = "15" } }) &
(element coeffs { list { xsd:double+ } } | attribute coeffs { list { xsd:double+ } }) &
(element boundary { ( "transmit" | "reflective" | "vacuum" | "periodic" ) } |
attribute boundary { ( "transmit" | "reflective" | "vacuum" | "periodic" ) })? &
(element periodic_surface_id { xsd:int } | attribute periodic_surface_id { xsd:int })?
}*
& element lattice {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string { maxLength="52" } } |
attribute name { xsd:string { maxLength="52" } })? &
(element dimension { list { xsd:positiveInteger+ } } |
attribute dimension { list { xsd:positiveInteger+ } }) &
(element lower_left { list { xsd:double+ } } | attribute lower_left { list { xsd:double+ } }) &
(element pitch { list { xsd:double+ } } | attribute pitch { list { xsd:double+ } }) &
(element universes { list { xsd:int+ } } | attribute universes { list { xsd:int+ } }) &
(element outer { xsd:int } | attribute outer { xsd:int })?
}*
& element hex_lattice {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string { maxLength="52" } } |
attribute name { xsd:string { maxLength="52" } })? &
(element n_rings { xsd:int } | attribute n_rings { xsd:int }) &
(element n_axial { xsd:int } | attribute n_axial { xsd:int })? &
(element center { list { xsd:double+ } } | attribute center { list { xsd:double+ } }) &
(element pitch { list { xsd:double+ } } | attribute pitch { list { xsd:double+ } }) &
(element orientation { ( "x" | "y" ) } | attribute orientation { ( "x" | "y" ) })? &
(element universes { list { xsd:int+ } } | attribute universes { list { xsd:int+ } }) &
(element outer { xsd:int } | attribute outer { xsd:int })?
}*
}

View file

@ -1,447 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="geometry" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<zeroOrMore>
<element name="cell">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="universe">
<data type="int"/>
</element>
<attribute name="universe">
<data type="int"/>
</attribute>
</choice>
</optional>
<choice>
<choice>
<element name="fill">
<data type="int"/>
</element>
<attribute name="fill">
<data type="int"/>
</attribute>
</choice>
<choice>
<element name="material">
<list>
<oneOrMore>
<choice>
<data type="int"/>
<value>void</value>
</choice>
</oneOrMore>
</list>
</element>
<attribute name="material">
<list>
<oneOrMore>
<choice>
<data type="int"/>
<value>void</value>
</choice>
</oneOrMore>
</list>
</attribute>
</choice>
</choice>
<optional>
<choice>
<element name="temperature">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="temperature">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="region">
<data type="string"/>
</element>
<attribute name="region">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="rotation">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="rotation">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="translation">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="translation">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="surface">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</attribute>
</choice>
</optional>
<choice>
<element name="type">
<data type="string">
<param name="maxLength">15</param>
</data>
</element>
<attribute name="type">
<data type="string">
<param name="maxLength">15</param>
</data>
</attribute>
</choice>
<choice>
<element name="coeffs">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="coeffs">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<optional>
<choice>
<element name="boundary">
<choice>
<value>transmit</value>
<value>reflective</value>
<value>vacuum</value>
<value>periodic</value>
</choice>
</element>
<attribute name="boundary">
<choice>
<value>transmit</value>
<value>reflective</value>
<value>vacuum</value>
<value>periodic</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="periodic_surface_id">
<data type="int"/>
</element>
<attribute name="periodic_surface_id">
<data type="int"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="lattice">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</attribute>
</choice>
</optional>
<choice>
<element name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="pitch">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="pitch">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="universes">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="universes">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
<optional>
<choice>
<element name="outer">
<data type="int"/>
</element>
<attribute name="outer">
<data type="int"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="hex_lattice">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</attribute>
</choice>
</optional>
<choice>
<element name="n_rings">
<data type="int"/>
</element>
<attribute name="n_rings">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="n_axial">
<data type="int"/>
</element>
<attribute name="n_axial">
<data type="int"/>
</attribute>
</choice>
</optional>
<choice>
<element name="center">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="center">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="pitch">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="pitch">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<optional>
<choice>
<element name="orientation">
<choice>
<value>x</value>
<value>y</value>
</choice>
</element>
<attribute name="orientation">
<choice>
<value>x</value>
<value>y</value>
</choice>
</attribute>
</choice>
</optional>
<choice>
<element name="universes">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="universes">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
<optional>
<choice>
<element name="outer">
<data type="int"/>
</element>
<attribute name="outer">
<data type="int"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
</interleave>
</element>

View file

@ -1,41 +0,0 @@
element materials {
element material {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string } | attribute name { xsd:string })? &
(element depletable { xsd:boolean } | attribute depletable { xsd:boolean })? &
(element volume { xsd:double } | attribute volume { xsd:double })? &
(element temperature { xsd:double } | attribute temperature { xsd:double })? &
element density {
(element value { xsd:double } | attribute value { xsd:double })? &
(element units { xsd:string { maxLength = "10" } } |
attribute units { xsd:string { maxLength = "10" } })
} &
element nuclide {
(element name { xsd:string } | attribute name { xsd:string }) &
(
(element ao { xsd:double } | attribute ao { xsd:double }) |
(element wo { xsd:double } | attribute wo { xsd:double })
)
}* &
element isotropic { xsd:string }? &
element macroscopic {
(element name { xsd:string } |
attribute name { xsd:string })
}* &
element sab {
(element name { xsd:string } | attribute name { xsd:string }) &
(element fraction { xsd:double } | attribute fraction { xsd:double })?
}*
}+ &
element cross_sections { xsd:string { maxLength = "255" } }?
}

View file

@ -1,165 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="materials" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<oneOrMore>
<element name="material">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string"/>
</element>
<attribute name="name">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="depletable">
<data type="boolean"/>
</element>
<attribute name="depletable">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="volume">
<data type="double"/>
</element>
<attribute name="volume">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="temperature">
<data type="double"/>
</element>
<attribute name="temperature">
<data type="double"/>
</attribute>
</choice>
</optional>
<element name="density">
<interleave>
<optional>
<choice>
<element name="value">
<data type="double"/>
</element>
<attribute name="value">
<data type="double"/>
</attribute>
</choice>
</optional>
<choice>
<element name="units">
<data type="string">
<param name="maxLength">10</param>
</data>
</element>
<attribute name="units">
<data type="string">
<param name="maxLength">10</param>
</data>
</attribute>
</choice>
</interleave>
</element>
<zeroOrMore>
<element name="nuclide">
<interleave>
<choice>
<element name="name">
<data type="string"/>
</element>
<attribute name="name">
<data type="string"/>
</attribute>
</choice>
<choice>
<choice>
<element name="ao">
<data type="double"/>
</element>
<attribute name="ao">
<data type="double"/>
</attribute>
</choice>
<choice>
<element name="wo">
<data type="double"/>
</element>
<attribute name="wo">
<data type="double"/>
</attribute>
</choice>
</choice>
</interleave>
</element>
</zeroOrMore>
<optional>
<element name="isotropic">
<data type="string"/>
</element>
</optional>
<zeroOrMore>
<element name="macroscopic">
<choice>
<element name="name">
<data type="string"/>
</element>
<attribute name="name">
<data type="string"/>
</attribute>
</choice>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="sab">
<interleave>
<choice>
<element name="name">
<data type="string"/>
</element>
<attribute name="name">
<data type="string"/>
</attribute>
</choice>
<optional>
<choice>
<element name="fraction">
<data type="double"/>
</element>
<attribute name="fraction">
<data type="double"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
</interleave>
</element>
</oneOrMore>
<optional>
<element name="cross_sections">
<data type="string">
<param name="maxLength">255</param>
</data>
</element>
</optional>
</interleave>
</element>

View file

@ -1,61 +0,0 @@
element cross_sections {
element groups { xsd:int } &
element group_structure { list { xsd:double+ } } &
element inverse_velocities { list { xsd:double+ } }? &
element xsdata {
(element name { xsd:string { maxLength = "15" } } |
attribute name { xsd:string { maxLength = "15" } }) &
(element alias { xsd:string { maxLength = "15" } } |
attribute alias { xsd:string { maxLength = "15" } })? &
(element kT { xsd:double } | attribute kT { xsd:double })? &
(element fissionable { ( "true" | "false" ) } |
attribute fissionable { ( "true" | "false" ) }) &
(element representation { ( "isotropic" | "angle" ) } |
attribute representation { ( "isotropic" | "angle" ) })? &
(element num_azimuthal { xsd:positiveInteger } |
attribute num_azimuthal { xsd:positiveInteger })? &
(element num_polar { xsd:positiveInteger } |
attribute num_polar { xsd:positiveInteger })? &
(element scatt_type { ( "legendre" | "histogram" | "tabular" ) } |
attribute scatt_type { ( "legendre" | "histogram" | "tabular" ) })? &
(element order { xsd:positiveInteger } |
attribute order { xsd:positiveInteger }) &
element tabular_legendre {
(element enable { ( "true" | "false" ) } |
attribute enable { ( "true" | "false" ) })? &
(element num_points { xsd:positiveInteger } |
attribute num_points { xsd:positiveInteger })?
}? &
(element total { list { xsd:double+ } } |
attribute total { list { xsd:double+ } })? &
(element absorption { list { xsd:double+ } } |
attribute absorption { list { xsd:double+ } }) &
(element scatter { list { xsd:double+ } } |
attribute scatter { list { xsd:double+ } }) &
(element fission { list { xsd:double+ } } |
attribute fission { list { xsd:double+ } })? &
(element fission { list { xsd:double+ } } |
attribute fission { list { xsd:double+ } })? &
(element k_fission { list { xsd:double+ } } |
attribute k_fission { list { xsd:double+ } })? &
(element chi { list { xsd:double+ } } |
attribute chi { list { xsd:double+ } })? &
(element nu_fission { list { xsd:double+ } } |
attribute nu_fission { list { xsd:double+ } })?
}*
}

View file

@ -1,314 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="cross_sections" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<element name="groups">
<data type="int"/>
</element>
<element name="group_structure">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<optional>
<element name="inverse_velocities">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
</optional>
<zeroOrMore>
<element name="xsdata">
<interleave>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">15</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">15</param>
</data>
</attribute>
</choice>
<optional>
<choice>
<element name="alias">
<data type="string">
<param name="maxLength">15</param>
</data>
</element>
<attribute name="alias">
<data type="string">
<param name="maxLength">15</param>
</data>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="kT">
<data type="double"/>
</element>
<attribute name="kT">
<data type="double"/>
</attribute>
</choice>
</optional>
<choice>
<element name="fissionable">
<choice>
<value>true</value>
<value>false</value>
</choice>
</element>
<attribute name="fissionable">
<choice>
<value>true</value>
<value>false</value>
</choice>
</attribute>
</choice>
<optional>
<choice>
<element name="representation">
<choice>
<value>isotropic</value>
<value>angle</value>
</choice>
</element>
<attribute name="representation">
<choice>
<value>isotropic</value>
<value>angle</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="num_azimuthal">
<data type="positiveInteger"/>
</element>
<attribute name="num_azimuthal">
<data type="positiveInteger"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="num_polar">
<data type="positiveInteger"/>
</element>
<attribute name="num_polar">
<data type="positiveInteger"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="scatt_type">
<choice>
<value>legendre</value>
<value>histogram</value>
<value>tabular</value>
</choice>
</element>
<attribute name="scatt_type">
<choice>
<value>legendre</value>
<value>histogram</value>
<value>tabular</value>
</choice>
</attribute>
</choice>
</optional>
<choice>
<element name="order">
<data type="positiveInteger"/>
</element>
<attribute name="order">
<data type="positiveInteger"/>
</attribute>
</choice>
<optional>
<element name="tabular_legendre">
<interleave>
<optional>
<choice>
<element name="enable">
<choice>
<value>true</value>
<value>false</value>
</choice>
</element>
<attribute name="enable">
<choice>
<value>true</value>
<value>false</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="num_points">
<data type="positiveInteger"/>
</element>
<attribute name="num_points">
<data type="positiveInteger"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
<optional>
<choice>
<element name="total">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="total">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<choice>
<element name="absorption">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="absorption">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="scatter">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="scatter">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<optional>
<choice>
<element name="fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="k_fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="k_fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="chi">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="chi">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="nu_fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="nu_fission">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
</interleave>
</element>

View file

@ -1,41 +0,0 @@
element plots {
element plot {
(element id { xsd:int } | attribute id { xsd:int })? &
(element filename { xsd:string { maxLength = "50" } } |
attribute filename { xsd:string { maxLength = "50" } })? &
(element type { "slice" | "voxel" } |
attribute type { "slice" | "voxel" })? &
(element color_by { ( "cell" | "material" ) } |
attribute color_by { ( "cell" | "material" ) })? &
(element level { xsd:int } | attribute level { xsd:int })? &
(element origin { list { xsd:double+ } } |
attribute origin { list { xsd:double+ } })? &
(element width { list { xsd:double+ } } |
attribute width { list { xsd:double+ } })? &
(element basis { ( "xy" | "yz" | "xz" ) } |
attribute basis { ( "xy" | "yz" | "xz" ) })? &
(element pixels { list { xsd:int+ } } |
attribute pixels { list { xsd:int+ } })? &
(element background { list { xsd:int+ } } |
attribute background { list { xsd:int+ } })? &
element color {
(element id { xsd:int } | attribute id { xsd:int }) &
(element rgb { list { xsd:int+ } } |
attribute rgb { list { xsd:int+ } })
}* &
element mask {
(element components { list { xsd:int+ } } |
attribute components { list { xsd:int+ } }) &
(element background { list { xsd:int+ } } |
attribute background { list { xsd:int+ } })
}* &
element meshlines {
(element meshtype { ( "tally" | "entropy" | "ufs" | "cmfd" ) } |
attribute meshtype { ( "tally" | "entropy" | "ufs" | "cmfd" ) }) &
(element id { xsd:int } | attribute id { xsd:int })? &
(element linewidth { xsd:int } | attribute linewidth { xsd:int }) &
(element color { list { xsd:int+ } } |
attribute color { list { xsd:int+ } })?
}*
}*
}

View file

@ -1,293 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="plots" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<zeroOrMore>
<element name="plot">
<interleave>
<optional>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="filename">
<data type="string">
<param name="maxLength">50</param>
</data>
</element>
<attribute name="filename">
<data type="string">
<param name="maxLength">50</param>
</data>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="type">
<choice>
<value>slice</value>
<value>voxel</value>
</choice>
</element>
<attribute name="type">
<choice>
<value>slice</value>
<value>voxel</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="color_by">
<choice>
<value>cell</value>
<value>material</value>
</choice>
</element>
<attribute name="color_by">
<choice>
<value>cell</value>
<value>material</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="level">
<data type="int"/>
</element>
<attribute name="level">
<data type="int"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="origin">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="origin">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="basis">
<choice>
<value>xy</value>
<value>yz</value>
<value>xz</value>
</choice>
</element>
<attribute name="basis">
<choice>
<value>xy</value>
<value>yz</value>
<value>xz</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="pixels">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="pixels">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="background">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="background">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<zeroOrMore>
<element name="color">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<choice>
<element name="rgb">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="rgb">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="mask">
<interleave>
<choice>
<element name="components">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="components">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="background">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="background">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="meshlines">
<interleave>
<choice>
<element name="meshtype">
<choice>
<value>tally</value>
<value>entropy</value>
<value>ufs</value>
<value>cmfd</value>
</choice>
</element>
<attribute name="meshtype">
<choice>
<value>tally</value>
<value>entropy</value>
<value>ufs</value>
<value>cmfd</value>
</choice>
</attribute>
</choice>
<optional>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
</optional>
<choice>
<element name="linewidth">
<data type="int"/>
</element>
<attribute name="linewidth">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="color">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="color">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
</interleave>
</element>
</zeroOrMore>
</element>

View file

@ -1,19 +0,0 @@
=====================
Editing RelaxNG files
=====================
All direct edits to RelaxNG files should be in the .rnc files. The program
TRANG_ should be used to generate a correcsponding .rng file. For Ubuntu, you
can install with:
.. code-block:: bash
sudo apt-get install trang
To convert the .rnc file to .rng, use the following syntax:
.. code-block:: bash
trang {filename}.rnc {filename}.rng
.. _TRANG: http://www.thaiopensource.com/relaxng/trang.html

View file

@ -1,204 +0,0 @@
element settings {
element batches { xsd:positiveInteger }? &
element confidence_intervals { xsd:boolean }? &
element create_fission_neutrons { xsd:boolean }? &
element cutoff {
(element weight { xsd:double } | attribute weight { xsd:double })? &
(element weight_avg { xsd:double } | attribute weight_avg { xsd:double })? &
(element energy_neutron { xsd:double } | attribute energy_neutron { xsd:double })? &
(element energy_photon { xsd:double } | attribute energy_photon { xsd:double })? &
(element energy_electron { xsd:double } | attribute energy_electron { xsd:double })? &
(element energy_positron { xsd:double } | attribute energy_positron { xsd:double })?
}? &
element delayed_photon_scaling { xsd:boolean }? &
element electron_treatment { ( "led" | "ttb" ) }? &
element energy_grid { ( "nuclide" | "log" | "logarithm" | "logarithmic" | "material-union" | "union" ) }? &
element energy_mode { ( "continuous-energy" | "ce" | "CE" | "multi-group" | "mg" | "MG" ) }? &
element entropy_mesh { xsd:positiveInteger }? &
element event_based { xsd:boolean }? &
element generations_per_batch { xsd:positiveInteger }? &
element inactive { xsd:nonNegativeInteger }? &
element keff_trigger {
(element type { xsd:string } | attribute type { xsd:string }) &
(element threshold { xsd:double} | attribute threshold { xsd:double })
}? &
element log_grid_bins { xsd:positiveInteger }? &
element material_cell_offsets { xsd:boolean }? &
element max_particles_in_flight { xsd:positiveInteger }? &
element max_order { xsd:nonNegativeInteger }? &
element mesh {
(element id { xsd:int } | attribute id { xsd:int }) &
(element type { ( "regular" ) } |
attribute type { ( "regular" ) })? &
(element dimension { list { xsd:positiveInteger+ } } |
attribute dimension { list { xsd:positiveInteger+ } }) &
(element lower_left { list { xsd:double+ } } |
attribute lower_left { list { xsd:double+ } }) &
(
(element upper_right { list { xsd:double+ } } |
attribute upper_right { list { xsd:double+ } }) |
(element width { list { xsd:double+ } } |
attribute width { list { xsd:double+ } })
)
}* &
element no_reduce { xsd:boolean }? &
element output {
(element summary { xsd:boolean } | attribute summary { xsd:boolean })? &
(element tallies { xsd:boolean } | attribute tallies { xsd:boolean })? &
(element path { xsd:string } | attribute path { xsd:string })?
}? &
element particles { xsd:positiveInteger }? &
element photon_transport { xsd:boolean }? &
element ptables { xsd:boolean }? &
element dagmc { xsd:boolean }? &
element run_mode { xsd:string }? &
element seed { xsd:positiveInteger }? &
element source {
grammar {
start =
(element particle { xsd:string } | attribute particle { xsd:string })? &
(element strength { xsd:double } | attribute strength { xsd:double })? &
(element file { xsd:string } | attribute file { xsd:string })? &
element space {
(element type { xsd:string } | attribute type { xsd:string }) &
(element parameters { list { xsd:double+ } } |
attribute parameters { list { xsd:double+ } })? &
element x { distribution }? &
element y { distribution }? &
element z { distribution }? &
element r { distribution }? &
element theta { distribution }? &
element phi { distribution }? &
element origin { list { xsd:double, xsd:double, xsd:double } }?
}? &
element angle {
(element type { xsd:string } | attribute type { xsd:string }) &
(element reference_uvw { list { xsd:double, xsd:double, xsd:double } } |
attribute reference_uvw { list { xsd:double, xsd:double, xsd:double } })? &
element mu { distribution }? &
element phi { distribution }?
}? &
element energy { distribution }?
distribution =
(element type { xsd:string { maxLength = "16" } } |
attribute type { xsd:string { maxLength = "16" } }) &
(element interpolation { xsd:string } |
attribute interpolation { xsd:string })? &
(element parameters { list { xsd:double+ } } |
attribute parameters { list { xsd:double+ } })?
}
}* &
element state_point {
(
(element batches { list { xsd:positiveInteger+ } } |
attribute batches { list { xsd:positiveInteger+ } }) |
(element interval { xsd:positiveInteger } |
attribute interval { xsd:positiveInteger })
)
}? &
element source_point {
(
(element batches { list { xsd:positiveInteger+ } } |
attribute batches { list { xsd:positiveInteger+ } }) |
(element interval { xsd:positiveInteger } |
attribute interval { xsd:positiveInteger })
)? &
(element separate { xsd:boolean } |
attribute separate { xsd:boolean })? &
(element write { xsd:boolean } |
attribute write { xsd:boolean })? &
(element overwrite_latest { xsd:boolean} |
attribute overwrite_latest {xsd:boolean})?
}? &
element surf_source_read {
(element path { xsd:string } | attribute path { xsd:string })
}? &
element surf_source_write {
(element surface_ids { list { xsd:positiveInteger+ } } |
attribute surface_ids { list { xsd:positiveInteger+ } }) &
(element max_particles { xsd:positiveInteger } |
attribute max_particles { xsd:positiveInteger })
}? &
element survival_biasing { xsd:boolean }? &
element temperature_default { xsd:double }? &
element temperature_method { xsd:string }? &
element temperature_multipole { xsd:boolean }? &
element temperature_range { list { xsd:double, xsd:double } }? &
element temperature_tolerance { xsd:double }? &
element threads { xsd:positiveInteger }? &
element trace { list { xsd:positiveInteger+ } }? &
element track { list { xsd:positiveInteger+ } }? &
element trigger {
(element active { xsd:boolean } | attribute active { xsd:boolean }) &
(element max_batches { xsd:positiveInteger } | attribute max_batches { xsd:positiveInteger }) &
(element batch_interval { xsd:positiveInteger } | attribute batch_interval { xsd:positiveInteger })?
}? &
element ufs_mesh { xsd:positiveInteger }? &
element verbosity { xsd:positiveInteger }? &
element volume_calc {
(element domain_type { xsd:string } |
attribute domain_type { xsd:string }) &
(element domain_ids { list { xsd:integer+ } } |
attribute domain_ids { list { xsd:integer+ } }) &
(element samples { xsd:positiveInteger } |
attribute samples { xsd:positiveInteger }) &
(element lower_left { list { xsd:double+ } } |
attribute lower_left { list { xsd:double+ } }) &
(element upper_right { list { xsd:double+ } } |
attribute upper_right { list { xsd:double+ } })
}* &
element write_initial_source { xsd:boolean }? &
element resonance_scattering {
(element enable { xsd:boolean } | attribute enable { xsd:boolean })? &
(element method { xsd:string } | attribute method { xsd:string })? &
(element energy_min { xsd:double } | attribute energy_min { xsd:double })? &
(element energy_max { xsd:double } | attribute energy_max { xsd:double })? &
(element nuclides { list { xsd:string+ } } |
attribute nuclides { list { xsd:string+ } })?
}?
}

View file

@ -1,921 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="settings" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<optional>
<element name="batches">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="confidence_intervals">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="create_fission_neutrons">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="cutoff">
<interleave>
<optional>
<choice>
<element name="weight">
<data type="double"/>
</element>
<attribute name="weight">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="weight_avg">
<data type="double"/>
</element>
<attribute name="weight_avg">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_neutron">
<data type="double"/>
</element>
<attribute name="energy_neutron">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_photon">
<data type="double"/>
</element>
<attribute name="energy_photon">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_electron">
<data type="double"/>
</element>
<attribute name="energy_electron">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_positron">
<data type="double"/>
</element>
<attribute name="energy_positron">
<data type="double"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="delayed_photon_scaling">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="event_based">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="max_particles_in_flight">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="electron_treatment">
<choice>
<value>led</value>
<value>ttb</value>
</choice>
</element>
</optional>
<optional>
<element name="energy_grid">
<choice>
<value>nuclide</value>
<value>log</value>
<value>logarithm</value>
<value>logarithmic</value>
<value>material-union</value>
<value>union</value>
</choice>
</element>
</optional>
<optional>
<element name="energy_mode">
<choice>
<value>continuous-energy</value>
<value>ce</value>
<value>CE</value>
<value>multi-group</value>
<value>mg</value>
<value>MG</value>
</choice>
</element>
</optional>
<optional>
<element name="entropy_mesh">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="generations_per_batch">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="inactive">
<data type="nonNegativeInteger"/>
</element>
</optional>
<optional>
<element name="keff_trigger">
<interleave>
<choice>
<element name="type">
<data type="string"/>
</element>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="threshold">
<data type="double"/>
</element>
<attribute name="threshold">
<data type="double"/>
</attribute>
</choice>
</interleave>
</element>
</optional>
<optional>
<element name="log_grid_bins">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="material_cell_offsets">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="max_order">
<data type="nonNegativeInteger"/>
</element>
</optional>
<zeroOrMore>
<element name="mesh">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="type">
<value>regular</value>
</element>
<attribute name="type">
<value>regular</value>
</attribute>
</choice>
</optional>
<choice>
<element name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<choice>
<element name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</choice>
</interleave>
</element>
</zeroOrMore>
<optional>
<element name="no_reduce">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="output">
<interleave>
<optional>
<choice>
<element name="summary">
<data type="boolean"/>
</element>
<attribute name="summary">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="tallies">
<data type="boolean"/>
</element>
<attribute name="tallies">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="path">
<data type="string"/>
</element>
<attribute name="path">
<data type="string"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="particles">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="photon_transport">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="ptables">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="dagmc">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="run_mode">
<data type="string"/>
</element>
</optional>
<optional>
<element name="seed">
<data type="positiveInteger"/>
</element>
</optional>
<zeroOrMore>
<element name="source">
<grammar>
<start>
<interleave>
<optional>
<choice>
<element name="particle">
<data type="string"/>
</element>
<attribute name="particle">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="strength">
<data type="double"/>
</element>
<attribute name="strength">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="file">
<data type="string"/>
</element>
<attribute name="file">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<element name="space">
<interleave>
<choice>
<element name="type">
<data type="string"/>
</element>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<optional>
<choice>
<element name="parameters">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="parameters">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<element name="x">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="y">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="z">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="r">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="theta">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="phi">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="origin">
<list>
<data type="double"/>
<data type="double"/>
<data type="double"/>
</list>
</element>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="angle">
<interleave>
<choice>
<element name="type">
<data type="string"/>
</element>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<optional>
<choice>
<element name="reference_uvw">
<list>
<data type="double"/>
<data type="double"/>
<data type="double"/>
</list>
</element>
<attribute name="reference_uvw">
<list>
<data type="double"/>
<data type="double"/>
<data type="double"/>
</list>
</attribute>
</choice>
</optional>
<optional>
<element name="mu">
<ref name="distribution"/>
</element>
</optional>
<optional>
<element name="phi">
<ref name="distribution"/>
</element>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="energy">
<ref name="distribution"/>
</element>
</optional>
</interleave>
</start>
<define name="distribution">
<interleave>
<choice>
<element name="type">
<data type="string">
<param name="maxLength">16</param>
</data>
</element>
<attribute name="type">
<data type="string">
<param name="maxLength">16</param>
</data>
</attribute>
</choice>
<optional>
<choice>
<element name="interpolation">
<data type="string"/>
</element>
<attribute name="interpolation">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="parameters">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="parameters">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</define>
</grammar>
</element>
</zeroOrMore>
<optional>
<element name="state_point">
<choice>
<choice>
<element name="batches">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="batches">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="interval">
<data type="positiveInteger"/>
</element>
<attribute name="interval">
<data type="positiveInteger"/>
</attribute>
</choice>
</choice>
</element>
</optional>
<optional>
<element name="source_point">
<interleave>
<optional>
<choice>
<choice>
<element name="batches">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="batches">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="interval">
<data type="positiveInteger"/>
</element>
<attribute name="interval">
<data type="positiveInteger"/>
</attribute>
</choice>
</choice>
</optional>
<optional>
<choice>
<element name="separate">
<data type="boolean"/>
</element>
<attribute name="separate">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="write">
<data type="boolean"/>
</element>
<attribute name="write">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="overwrite_latest">
<data type="boolean"/>
</element>
<attribute name="overwrite_latest">
<data type="boolean"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="surf_source_read">
<choice>
<element name="path">
<data type="string"/>
</element>
<attribute name="path">
<data type="string"/>
</attribute>
</choice>
</element>
</optional>
<optional>
<element name="surf_source_write">
<interleave>
<choice>
<element name="surface_ids">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="surface_ids">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="max_particles">
<data type="positiveInteger"/>
</element>
<attribute name="max_particles">
<data type="positiveInteger"/>
</attribute>
</choice>
</interleave>
</element>
</optional>
<optional>
<element name="survival_biasing">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="temperature_default">
<data type="double"/>
</element>
</optional>
<optional>
<element name="temperature_method">
<data type="string"/>
</element>
</optional>
<optional>
<element name="temperature_multipole">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="temperature_range">
<list>
<data type="double"/>
<data type="double"/>
</list>
</element>
</optional>
<optional>
<element name="temperature_tolerance">
<data type="double"/>
</element>
</optional>
<optional>
<element name="threads">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="trace">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
</optional>
<optional>
<element name="track">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
</optional>
<optional>
<element name="trigger">
<interleave>
<choice>
<element name="active">
<data type="boolean"/>
</element>
<attribute name="active">
<data type="boolean"/>
</attribute>
</choice>
<choice>
<element name="max_batches">
<data type="positiveInteger"/>
</element>
<attribute name="max_batches">
<data type="positiveInteger"/>
</attribute>
</choice>
<optional>
<choice>
<element name="batch_interval">
<data type="positiveInteger"/>
</element>
<attribute name="batch_interval">
<data type="positiveInteger"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
<optional>
<element name="ufs_mesh">
<data type="positiveInteger"/>
</element>
</optional>
<optional>
<element name="verbosity">
<data type="positiveInteger"/>
</element>
</optional>
<zeroOrMore>
<element name="volume_calc">
<interleave>
<choice>
<element name="domain_type">
<data type="string"/>
</element>
<attribute name="domain_type">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="domain_ids">
<list>
<oneOrMore>
<data type="integer"/>
</oneOrMore>
</list>
</element>
<attribute name="domain_ids">
<list>
<oneOrMore>
<data type="integer"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="samples">
<data type="positiveInteger"/>
</element>
<attribute name="samples">
<data type="positiveInteger"/>
</attribute>
</choice>
<choice>
<element name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
</element>
</zeroOrMore>
<optional>
<element name="write_initial_source">
<data type="boolean"/>
</element>
</optional>
<optional>
<element name="resonance_scattering">
<interleave>
<optional>
<choice>
<element name="enable">
<data type="boolean"/>
</element>
<attribute name="enable">
<data type="boolean"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="method">
<data type="string"/>
</element>
<attribute name="method">
<data type="string"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_min">
<data type="double"/>
</element>
<attribute name="energy_min">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="energy_max">
<data type="double"/>
</element>
<attribute name="energy_max">
<data type="double"/>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="nuclides">
<list>
<oneOrMore>
<data type="string"/>
</oneOrMore>
</list>
</element>
<attribute name="nuclides">
<list>
<oneOrMore>
<data type="string"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</element>
</optional>
</interleave>
</element>

View file

@ -1,114 +0,0 @@
element tallies {
element mesh {
(element id { xsd:int } | attribute id { xsd:int }) &
(
(
(element type { ( "regular" ) } |
attribute type { ( "regular" ) }) &
(element dimension { list { xsd:positiveInteger+ } } |
attribute dimension { list { xsd:positiveInteger+ } }) &
(element lower_left { list { xsd:double+ } } |
attribute lower_left { list { xsd:double+ } }) &
(
(element upper_right { list { xsd:double+ } } |
attribute upper_right { list { xsd:double+ } }) |
(element width { list { xsd:double+ } } |
attribute width { list { xsd:double+ } })
)
) | (
(element type { ( "rectilinear" ) } |
attribute type { ( "rectilinear" ) }) &
(element x_grid { list { xsd:double+ } } |
attribute x_grid { list { xsd:double+ } }) &
(element y_grid { list { xsd:double+ } } |
attribute y_grid { list { xsd:double+ } }) &
(element z_grid { list { xsd:double+ } } |
attribute z_grid { list { xsd:double+ } })
) | (
(element type { ( "cylindrical" ) } |
attribute type { ( "cylindrical" ) }) &
(element r_grid { list { xsd:double+ } } |
attribute r_grid { list { xsd:double+ } }) &
(element phi_grid { list { xsd:double+ } } |
attribute phi_grid { list { xsd:double+ } }) &
(element z_grid { list { xsd:double+ } } |
attribute z_grid { list { xsd:double+ } })
) | (
(element type { ( "spherical" ) } |
attribute type { ( "spherical" ) }) &
(element r_grid { list { xsd:double+ } } |
attribute r_grid { list { xsd:double+ } }) &
(element theta_grid { list { xsd:double+ } } |
attribute theta_grid { list { xsd:double+ } }) &
(element phi_grid { list { xsd:double+ } } |
attribute phi_grid { list { xsd:double+ } })
)
)
}* &
element derivative {
(element id { xsd:int } | attribute id { xsd:int }) &
(element material { xsd:int } | attribute material { xsd:int }) &
( (element variable { ( "density") }
| attribute variable { ( "density" ) } ) |
(
(element variable { ( "nuclide_density" ) }
| attribute variable { ( "nuclide_density" ) } )
&
(element nuclide { xsd:string { maxLength = "12" } }
| attribute nuclide { xsd:string { maxLength = "12" } } )
) |
(element variable { ( "temperature") }
| attribute variable { ( "temperature" ) } )
)
}* &
element filter {
(element id { xsd:int } | attribute id { xsd:int }) &
(
( (element type { ( "cell" | "cellfrom" | "cellborn" | "material" |
"universe" | "surface" | "distribcell" | "mesh" | "energy" |
"energyout" | "mu" | "polar" | "azimuthal" | "delayedgroup" |
"energyfunction" | "meshsurface" | "cellinstance") } |
attribute type { ( "cell" | "cellfrom" | "cellborn" | "material" |
"universe" | "surface" | "distribcell" | "mesh" | "energy" |
"energyout" | "mu" | "polar" | "azimuthal" | "delayedgroup" |
"energyfunction" | "meshsurface" | "cellinstance") }) &
(element bins { list { xsd:double+ } } |
attribute bins { list { xsd:double+ } })
) |
(
(element type { ("energyfunction") } |
attribute type { ("energyfunction") }) &
(element energy { list { xsd:double+ } } |
attribute energy { list { xsd:double+ } }) &
(element y { list { xsd:double+ } } |
attribute y { list { xsd:double+ } })
)
)
}* &
element tally {
(element id { xsd:int } | attribute id { xsd:int }) &
(element name { xsd:string { maxLength="52" } } |
attribute name { xsd:string { maxLength="52" } })? &
(element estimator { ( "analog" | "tracklength" | "collision" ) } |
attribute estimator { ( "analog" | "tracklength" | "collision" ) })? &
(element filters { list { xsd:int+ } } |
attribute filters { list { xsd:int+ } })? &
element nuclides {
list { xsd:string { maxLength = "12" }+ }
}? &
element scores {
list { xsd:string { maxLength = "20" }+ }
} &
element trigger {
(element type { xsd:string } | attribute type { xsd:string }) &
(element threshold { xsd:double} | attribute threshold { xsd:double }) &
(element scores { list { xsd:string { maxLength = "20" }+ } } | attribute scores { list { xsd:string { maxLength = "20"}+ } } )?
}* &
(element derivative { xsd:int } | attribute derivative { xsd:int } )?
}* &
element assume_separate { xsd:boolean }?
}

View file

@ -1,480 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<element name="tallies" xmlns="http://relaxng.org/ns/structure/1.0" datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
<interleave>
<zeroOrMore>
<element name="mesh">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<choice>
<interleave>
<choice>
<element name="type">
<value>regular</value>
</element>
<attribute name="type">
<value>regular</value>
</attribute>
</choice>
<choice>
<element name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</element>
<attribute name="dimension">
<list>
<oneOrMore>
<data type="positiveInteger"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="lower_left">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<choice>
<element name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="upper_right">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="width">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</choice>
</interleave>
<interleave>
<choice>
<element name="type">
<value>rectilinear</value>
</element>
<attribute name="type">
<value>rectilinear</value>
</attribute>
</choice>
<choice>
<element name="x_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="x_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="y_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="y_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="z_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="z_grid">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
</choice>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="derivative">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<choice>
<element name="material">
<data type="int"/>
</element>
<attribute name="material">
<data type="int"/>
</attribute>
</choice>
<choice>
<choice>
<element name="variable">
<value>density</value>
</element>
<attribute name="variable">
<value>density</value>
</attribute>
</choice>
<interleave>
<choice>
<element name="variable">
<value>nuclide_density</value>
</element>
<attribute name="variable">
<value>nuclide_density</value>
</attribute>
</choice>
<choice>
<element name="nuclide">
<data type="string">
<param name="maxLength">12</param>
</data>
</element>
<attribute name="nuclide">
<data type="string">
<param name="maxLength">12</param>
</data>
</attribute>
</choice>
</interleave>
<choice>
<element name="variable">
<value>temperature</value>
</element>
<attribute name="variable">
<value>temperature</value>
</attribute>
</choice>
</choice>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="filter">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<choice>
<interleave>
<choice>
<element name="type">
<choice>
<value>cell</value>
<value>cellfrom</value>
<value>cellborn</value>
<value>material</value>
<value>universe</value>
<value>surface</value>
<value>distribcell</value>
<value>mesh</value>
<value>energy</value>
<value>energyout</value>
<value>mu</value>
<value>polar</value>
<value>azimuthal</value>
<value>delayedgroup</value>
<value>energyfunction</value>
<value>meshsurface</value>
<value>cellinstance</value>
</choice>
</element>
<attribute name="type">
<choice>
<value>cell</value>
<value>cellfrom</value>
<value>cellborn</value>
<value>material</value>
<value>universe</value>
<value>surface</value>
<value>distribcell</value>
<value>mesh</value>
<value>energy</value>
<value>energyout</value>
<value>mu</value>
<value>polar</value>
<value>azimuthal</value>
<value>delayedgroup</value>
<value>energyfunction</value>
<value>meshsurface</value>
<value>cellinstance</value>
</choice>
</attribute>
</choice>
<choice>
<element name="bins">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="bins">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
<interleave>
<choice>
<element name="type">
<value>energyfunction</value>
</element>
<attribute name="type">
<value>energyfunction</value>
</attribute>
</choice>
<choice>
<element name="energy">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="energy">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
<choice>
<element name="y">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</element>
<attribute name="y">
<list>
<oneOrMore>
<data type="double"/>
</oneOrMore>
</list>
</attribute>
</choice>
</interleave>
</choice>
</interleave>
</element>
</zeroOrMore>
<zeroOrMore>
<element name="tally">
<interleave>
<choice>
<element name="id">
<data type="int"/>
</element>
<attribute name="id">
<data type="int"/>
</attribute>
</choice>
<optional>
<choice>
<element name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</element>
<attribute name="name">
<data type="string">
<param name="maxLength">52</param>
</data>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="estimator">
<choice>
<value>analog</value>
<value>tracklength</value>
<value>collision</value>
</choice>
</element>
<attribute name="estimator">
<choice>
<value>analog</value>
<value>tracklength</value>
<value>collision</value>
</choice>
</attribute>
</choice>
</optional>
<optional>
<choice>
<element name="filters">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</element>
<attribute name="filters">
<list>
<oneOrMore>
<data type="int"/>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
<optional>
<element name="nuclides">
<list>
<oneOrMore>
<data type="string">
<param name="maxLength">12</param>
</data>
</oneOrMore>
</list>
</element>
</optional>
<element name="scores">
<list>
<oneOrMore>
<data type="string">
<param name="maxLength">20</param>
</data>
</oneOrMore>
</list>
</element>
<zeroOrMore>
<element name="trigger">
<interleave>
<choice>
<element name="type">
<data type="string"/>
</element>
<attribute name="type">
<data type="string"/>
</attribute>
</choice>
<choice>
<element name="threshold">
<data type="double"/>
</element>
<attribute name="threshold">
<data type="double"/>
</attribute>
</choice>
<optional>
<choice>
<element name="scores">
<list>
<oneOrMore>
<data type="string">
<param name="maxLength">20</param>
</data>
</oneOrMore>
</list>
</element>
<attribute name="scores">
<list>
<oneOrMore>
<data type="string">
<param name="maxLength">20</param>
</data>
</oneOrMore>
</list>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
<optional>
<choice>
<element name="derivative">
<data type="int"/>
</element>
<attribute name="derivative">
<data type="int"/>
</attribute>
</choice>
</optional>
</interleave>
</element>
</zeroOrMore>
<optional>
<element name="assume_separate">
<data type="boolean"/>
</element>
</optional>
</interleave>
</element>