.. _input-file-gen: Input File Generation ===================== .. _automatic-input-file-gen: Automatic Input File Generation ------------------------------- It is frequently desired to create a MG or CE library based on a selected set of ENDF/B formatted files. The auxiliary AMPX code ExSite greatly helps with the task of preparing the input files. This section focuses on the background of input file generation, whereas the use of ExSite is described in :numref:`using-exsite`. ExSite first parses the desired ENDF/B formatted file and generates an abbreviated list of information pertinent to library creation. The list is stored in XML format to allow easy human and machine readability. The list is used in conjunction with templates that contain the input descriptions for the AMPX modules necessary to generate the desired library. In general, more than one template is needed to generate the final library. The next section describes the creation of the abbreviated ENDF list in more detail. The format of the templates is described later. .. _ENDF-listing: ENDF Listing ~~~~~~~~~~~~ The templates used to generate AMPX input files require a list of ENDF information which is assumed to be in xml format and must contain a root element named ``Materials``. The information is automatically extracted from ENDF/B formatted files. The given file can contain one or more evaluations. For each evaluation, an XML element named ``Material`` is added to the XML file. The element contains attribute/value pairs for every piece of information extracted from the ENDF evaluation. The available attributes are listed in :numref:`tab-15`. Since an extensible XML format is used, more attribute value pairs may be added in the future. .. tabularcolumns:: |m{3cm}|m{11cm}| .. table:: Field names automatically extracted from the ENDF evaluation. :name: tab-15 :align: center :class: longtable +----------------+----------------------------------------------------------------------+ | Name | Description | +================+======================================================================+ | tape | The full name of the file containing the evaluation | +----------------+----------------------------------------------------------------------+ | filename | The name (without the path) of the file containing the evaluation | +----------------+----------------------------------------------------------------------+ | endf | The endf material number | +----------------+----------------------------------------------------------------------+ | za | | The standard material charge number | | | | Retrieved from C1 position in first record of File 1 | +----------------+----------------------------------------------------------------------+ | awr | | The mass ratio of the material | | | | Retrieved from C2 position in first record of File 1 | +----------------+----------------------------------------------------------------------+ | dbrcnuclide | Set to "yes" if a >= 200. | +----------------+----------------------------------------------------------------------+ | tag | | | | | A name that uniquely describes the material | | | | Constructed from columns 1--11 of the fifth record of File 1 | | | | (Denoted ZYNAM in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | | mod | | The ENDF evaluation modification number. | | | | Retrieved from N2 position in first record of File 1 | | | | (Denoted NMOD in ENDF manual) | +----------------+----------------------------------------------------------------------+ | rel | | The ENDF evaluation release number. | | | | Retrieved from L1 position in third record of File 1 | | | | (Denoted LREL in ENDF manual) | +----------------+----------------------------------------------------------------------+ | nlib | The library source (ENDF, JEFF, etc.) | +----------------+----------------------------------------------------------------------+ | eval | | The date of the ENDF evaluation | | | | Retrieved from columns 23--32 of the fifth record of File 1 | | | | (Denoted EDATE in ENDF manual) | +----------------+----------------------------------------------------------------------+ | awi | Mass ratio of the incident particle | +----------------+----------------------------------------------------------------------+ | zai | ZA value of the incident particle | +----------------+----------------------------------------------------------------------+ | | | Set to "yes" if incident particle is a neutron. Otherwise set to | | neutron | "no" | | | | Based on C1 value in third record of File 1 | | | | (Denoted AWI in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | Set to "yes" if incident particle is a gamma. Otherwise set to | | gamma | "no" | | | | Based on C1 value in third record of File 1 | | | | (Denoted AWI in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | The name of the authors of the ENDF evaluation | | author | | Retrieved from columns 34--66 of the fifth record of File 1 | | | | (Denoted AUTH in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | The name of the originating laboratory | | lab | | Retrieved from columns 12--22 of the fifth record of File 1 | | | | (Denoted ALAB in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | The original distribution date of the ENDF evaluation | | dist | | Retrieved from columns 23--32 of the sixth record of File 1 | | | | (Denoted DDATE in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | Date of the last revision of the ENDF evaluation | | rdate | | Retrieved from columns 34--43 of the sixth record of File 1 | | | | (Denoted DDATE in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | The version number of the library | | rev | | Retrieved from the N2 value of the third record of File 1 | | | | (Denoted NVER in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | Set to "true" if the material is metastable, otherwise set to | | metaStable | "false" | | | | Determined from columns 1--11 of the fifth record of File 1 | | | | (Denoted ZYNAM in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | Library format | | version | | Retrieved from N2 position in second record of File 1 | | | | (Denoted NFOR in ENDF manual) | +----------------+----------------------------------------------------------------------+ | | | State number of the target nucleus. | | lis | | Retrieved from L2 position in second record of File 1 | +----------------+----------------------------------------------------------------------+ | | Set to "yes" if File 1 contains any of the following reaction: | | fission | 452, 455, 456, 458 | +----------------+----------------------------------------------------------------------+ | | Set to "yes" if the evaluation contains a File 2 | | file2 | | +----------------+----------------------------------------------------------------------+ | | Contains the number of isotopes given in File 2 | | nis | | +----------------+----------------------------------------------------------------------+ | resonance | If File 2 is present and contains resonance parameters for the | | | resolved resonance range, | | | then it is set to: | | | | | | - "SLBW" if the resonance parameters are given | | | in Single Level Breit--Wigner format. (ENDF parameters LRF=1) | | | | | | - "MLBW" if the resonance parameters are given in Multi | | | Level Breit--Wigner format. (ENDF parameters LRF=2) | | | | | | - "RM" if the resonance parameters are | | | given in Reich--Moore format. (ENDF parameters LRF=3) | | | | | | - "AA" if the resonance parameters are given in Adler--Adler format. | | | (ENDF parameters LRF=4) | | | | | | - "RML" if the resonance parameters are given in R-Matrix Limited | | | format. (ENDF parameters LRF=7) | | | | | | If more than one resolved resonance region is given for the | | | evaluation, the value reflects the format for the last resonance | | | region given. | +----------------+----------------------------------------------------------------------+ | res | If File 2 is present and contains resonance parameters for one or | | | more resolved resonance regions the value is set to "yes" | +----------------+----------------------------------------------------------------------+ | unres | If File 2 is present and contains resonance parameters for | | | one or more unresolved resonance regions the value is set to "yes" | +----------------+----------------------------------------------------------------------+ | scattering | If File 2 is present set to the potential scattering cross section. | | | It is determined from the first resolved resonance range for each | | | isotope given in the evaluation as follows (if the file only contains| | | an unresolved resonance range, the radius given in that section | | | is used): | | | | | | 1. Set the scattering radius ap to AP (see ENDF manual) if NRO = 0. | | | If NRO > 0, set ap to the first radius given in the table of | | | energy radius pair. If LRF=3 and ap=0.0, select first APL (see | | | ENDF manual) | | | 2. If only an unresolved region is present, select AP from it | | | 3. If LRF=7 select APE from the first group of | | | :math:`\mathrm{J}^{\pi}` values and the second channel | | | 4. Calculate the potential scattering cross section as | | | :math:`12.56637061 \times a p^2` | | | 5. If more than one isotope is present, add the cross section | | | data calculated in step 2 according to the abundance of each | | | isotope | +----------------+----------------------------------------------------------------------+ | file3 | Set to "yes" if the evaluation contains a File 3 | +----------------+----------------------------------------------------------------------+ | | | | file4 | Set to "yes" if the evaluation contains a File 4 | +----------------+----------------------------------------------------------------------+ | | | | file5 | Set to "yes" if the evaluation contains a File 5 | +----------------+----------------------------------------------------------------------+ | | | | totalFission | Set to "yes" if the evaluation contains a File 5 | | | and File 5 contains a section for MT=18 (total fission) | +----------------+----------------------------------------------------------------------+ | | | | partialFission | Set to "yes" if the evaluation contains a File 5 | | | and File 5 contains a section for MT=19, MT=20, MT=21 or MT=38 | | | (second chance fission) | +----------------+----------------------------------------------------------------------+ | | | | file6 | Set to "yes" if the evaluation contains a File 6 | +----------------+----------------------------------------------------------------------+ | | | | AWP0 | Set to "yes" if File 6 contains photon production yield matrices. | | | This is true if any of the sections has a mass | | | ratio of 0 for the product. In addition if LAW=2, the mass ratio | | | can contain | | | the gamma energy if the charge for the outgoing particle is 0 | +----------------+----------------------------------------------------------------------+ | | | | file7 | Set to "yes" if the evaluation contains a File 7 | +----------------+----------------------------------------------------------------------+ | | | | file7temps | If File 7 exists, it contains the list of | | | temperatures at which the moderator data were evaluated | +----------------+----------------------------------------------------------------------+ | | | | file12 | Set to "yes" if the evaluation contains a File 12 | +----------------+----------------------------------------------------------------------+ | | | | file13 | Set to "yes" if the evaluation contains a File 13 | +----------------+----------------------------------------------------------------------+ | | | | file23 | Set to "yes" if the evaluation contains a File 23 | +----------------+----------------------------------------------------------------------+ | | | | covariance | Set to "yes" if the evaluation contains File 31, File 32 or File 33 | +----------------+----------------------------------------------------------------------+ | | | | chicov | Set to "yes" if the evaluation contains File 35 | +----------------+----------------------------------------------------------------------+ The XML list containing the parameters automatically extracted from the ENDF evaluation is not sufficient to generate the input files. An additional XML file is used containing information concerning metastable nuclei and thermal moderator data. This configuration file contains a root element ``ConfigFile`` and three sections. If parsing one or more ENDF formatted files, a configuration file is automatically created with some default values. .. note:: The values should be reviewed before actually using the configuration file. In the final library, the nuclei are normally identified by their ZA value and not by the ENDF material number. This makes it necessary to use a different ID in some cases in order to avoid duplication. - ``endf`` contains the ENDF MAT number of the evaluation for which the final library ID should be changed. - ``realza`` contains the actual ZA value of the nucleus - ``scaleza`` contains the ID to be used in the final library - ``name`` label used in the SCALE standard composition library By default, the section contains new ID value for H1 (changed to 8001001) and H2 (changed to 8001002). .. _meta-stable: Meta Stable Nuclei ^^^^^^^^^^^^^^^^^^ Since the ZA value for meta-stable nuclei is the same as for the stable form, the ID in the final library needs to be changed in order to avoid duplicate entries with the same ID value. The section is contained in an element named metastable, which contains one or more nuclei elements. The nuclei element has three attributes: - ``endf`` contains the ENDF MAT number of the evaluation for which the final library ID should be changed - ``realza`` contains the actual ZA value of the nucleus - ``scaleza`` contains the ID to be used in the final library By default, an entry is created for each meta-stable nuclei contained on the ENDF tape being parsed. The new ID is set to LISO\*1000000+ZA. .. _thermal-moderators: Thermal Moderators ^^^^^^^^^^^^^^^^^^ In the creation of the final library, thermal moderators must be treated separately, as they only contain data in the thermal range. The data must be combined with one or more evaluation in the fast range. In addition the final ID should depend on the thermal data, as well as the fast data connected to it. The section is contained in an element named ``thermal``, which contains one or more ``nuclei`` elements. Each ``nuclei`` element has two attributes: - ``endf`` contains the ENDF MAT number of the evaluation for which the final library ID should be changed - ``realza`` contains the actual ZA value of the nucleus In addition, each ``nuclei`` element has one or more ``fastMat`` elements listing the evaluations to be used in the fast region. Each ``fastMat`` element contains the following attributes: - ``endf`` contains the ENDF MAT number evaluation to be used in the fast region - ``scaleza`` contains the ID to be used in the final library for the combined thermal and fast data - ``name`` specifies the name used in the SCALE standard composition library An evaluation is recognized as a thermal moderator if File 7 is present. In this case, an entry is automatically added. :numref:`tab-16` lists the values that are automatically selected. Please note that these are the material numbers as given in the ENDF manual. Some of the actual material numbers used in ENDF/VI and ENDF/VII differ from this designation. Please review the automatically generated configuration file for consistency. Comments containing the tag for each thermal and fast evaluation are included in the configuration file and should help in this task. .. table:: Thermal material numbers recognized (See ENDF manual for detail). :align: center :name: tab-16 +---------------+--------------------+--------------------+-------------+ | | | | | | MAT number | Description | Fast evaluation | SCALE ID | +===============+====================+====================+=============+ | | | | | | 1 | Water | Bound with H1 | 1001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 2 | Para Hydrogen | Bound with H1 | 5001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 3 | Ortho Hydrogen | Bound with H1 | 4001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 7 | H in ZrH | Bound with H1 | 7001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 11 | Heavy Water | Bound with H2 | 1002 | +---------------+--------------------+--------------------+-------------+ | | | | | | 11 | Para Deteurium | Bound with H2 | 5001002 | +---------------+--------------------+--------------------+-------------+ | | | | | | 13 | Ortho Deuterium | Bound with H2 | 4001002 | +---------------+--------------------+--------------------+-------------+ | | | | | | 26 | Be | Bound with Be9 | 3004009 | +---------------+--------------------+--------------------+-------------+ | | | | | | 27 | BeO | Bound with Be9 | 5004009 | | | +--------------------+-------------+ | | | | | | | | Bound with O16 | 5008016 | +---------------+--------------------+--------------------+-------------+ | | | | | | 28 | Be\ :sub:`2`\ C | Bound with Be9 | 7004009 | | | +--------------------+-------------+ | | | | | | | | Bound with C | 7006000 | +---------------+--------------------+--------------------+-------------+ | | | | | | 29 | Be in BeO | Bound with Be9 | 5004009 | +---------------+--------------------+--------------------+-------------+ | | | | | | 31 | Graphite | Bound with C | 3006000 | +---------------+--------------------+--------------------+-------------+ | | | | | | 33 | l-Methane | Bound with H1 | 7001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 34 | s-Methane | Bound with H1 | 2001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 37 | Polyethylene | Bound with H1 | 9001001 | +---------------+--------------------+--------------------+-------------+ | | | | | | 40 | Benzene | Bound with h1 | 6001001 | | | +--------------------+-------------+ | | | | | | | | Bound with C | 5006000 | +---------------+--------------------+--------------------+-------------+ | | | | | | 46 | O in BeO | Bound with O16 | 5008016 | +---------------+--------------------+--------------------+-------------+ | | | | | | 58 | Zr in ZrH | Bound with Zr | 1040000 | | | +--------------------+-------------+ | | | | | | | | Bound with Zr90 | 1040090 | | | +--------------------+-------------+ | | | | | | | | Bound with Zr91 | 1040091 | | | +--------------------+-------------+ | | | | | | | ... | +---------------+--------------------+--------------------+-------------+ | | | | | | 75 | UO\ :sub:`2` | Bound with O16 | 7008016 | | | +--------------------+-------------+ | | | | | | | | Bound with U232 | 1092232 | | | +--------------------+-------------+ | | | | | | | | Bound with U233 | 1092233 | | | +--------------------+-------------+ | | | | | | | | ... | | +---------------+--------------------+--------------------+-------------+ | | | | | | 76 | UC | Bound with C | 8006001 | +---------------+--------------------+--------------------+-------------+ | | | | | | | | Bound with U232 | 1092232 | +---------------+--------------------+--------------------+-------------+ | | | | | | | | Bound with U233 | 1092233 | +---------------+--------------------+--------------------+-------------+ If the ENDF material number for a thermal moderator is not found in :numref:`tab-16`, it is bound with an evaluation with the same Z and A value. This may not lead to the desired result if the ZA value is not set to a realistic value in ENDF. .. _templates: Templates ~~~~~~~~~ To generate input files, the XML lists described previously are combined with templates in XML format. The templates are usually part of a user template used in ExSite to automatically generate input files. This section describes the use of the template only. The template is an XML file containing elements instructing the parser on how to interpret the input. The main branching elements are: - ``openFile`` with attribute name, opens a file for writing. The name attribute contains the name of the file. Output will only be written to files that have previously been opened. This element can appear anywhere in the template. The element can contain an attribute newInput with values yes or no. If the value is no, the output file is opened in append mode, otherwise a new file is created. - ``closeFile`` with attribute name, closes a previously opened file. The name attribute contains the name of the file. This element can appear anywhere in the template. - ``writeFile`` with attribute name, opens a file for writing. The name attribute contains the name of the file. The only children allowed are XML CDATA sections and text elements (see below for more information). Any information contained in one of these child elements will be written into the output file. This element can appear anywhere in the template. Please note that any ``writeFile`` element needs to be closed before starting or closing any other element but a ``text`` element or a CDATA section. - ``text`` contains text to be written to the output file. It may contain an attribute ``restrict``. Please see below for more information. This element can only appear inside a ``writeFile`` element. - ``loop`` start a loop over all evaluations. It may contain an attribute ``restrict``. Please see below for more information. Looping elements may be nested. The element can appear anywhere in the templates except inside a ``writeFile`` element. - ``last`` is an element that can appears anywhere in a ``loop`` element. It is assumed that the element contains one or more ``writeFile`` elements which will be written to the file only if this is the last evaluation to be processed in the parent ``loop`` element. - ``first`` is an element similar to the last element except that its content is only used if the first evaluation of the parent ``loop`` element is processed. - ``notLast`` is an element that can appear anywhere in a ``loop`` element. It is assumed that the element contains one or more ``writeFile`` elements which will be written to the file for anything but the last evaluation to be processed in the parent ``loop`` element. - ``notFirst`` is an element similar to the ``notLast`` element, except it is processed for anything but the first evaluation to be processed in the parent ``loop`` element. - ``arrayLoop`` with attribute ``value`` is a special loop that loops over all values listed in the ``value`` attribute. Values are assumed to be separated by space. This loop type cannot be nested and cannot contain any ``last``, ``first``, ``notLast`` or ``notFirst`` elements. - ``thermalLoop`` loops over all fast evaluations that may be bound with the current thermal moderator. If the evaluation is not a thermal moderator, this loop will be ignored. This loop type cannot be nested and cannot contain any ``last``, ``first``, ``notLast`` or ``notFirst`` elements. - ``exclude`` with attribute ``run``. If the value of run is ``no``, this section of the template is ignored. Inside a text element or in any attribute value, the function *writeData()* will be substituted by values retrieved from the XML file listing the abbreviated ENDF information. The function *writeData* may have several arguments separated by commas. The first argument is always a reference to the field to be written, and the last two arguments are always optional and contain the length of the field and the fill character. If the first argument is any of the attribute names listed in :numref:`tab-15`, the value of that argument will be substituted. For example if processing :sup:`232`\ U, then *writeData(endf)* will be substituted by 9219 and *writeData(endf,6,\*)* will be substituted by \*\*9219. In addition to the values listed in :numref:`tab-15`, the values listed in :numref:`tab-17` can also be used. .. raw:: latex \clearpage .. tabularcolumns:: |m{4cm}|m{12cm}| .. table:: Additional substitution values that can be used in templates. :align: center :name: tab-17 :class: longtable :widths: 15 85 +-------------------+--------------------------------------------------------------------------------------------+ | | | | z | The atomic number of the current evaluation | +-------------------+--------------------------------------------------------------------------------------------+ | | | | a | The mass number of the current evaluation | +-------------------+--------------------------------------------------------------------------------------------+ | | | | chem | The chemical name of the current evaluation | +-------------------+--------------------------------------------------------------------------------------------+ | | | | source | The source of the library (endf, jeff, etc.). | | | This is just an alias for nlib. | +-------------------+--------------------------------------------------------------------------------------------+ | | | | library | A string representation of source which is used in some filenames | +-------------------+--------------------------------------------------------------------------------------------+ | | | | scaleid | | A special ID value used in the library, calculated as: | | | | **endf + 10000 \* rel + 1000000 \* rev** | | | | (See :numref:`tab-15` for definition of **endf**, **rel** and **rev**.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | changedza | The ZA value of the ID or the ID designated in the configuration file | +-------------------+--------------------------------------------------------------------------------------------+ | | | | thermalscaleid | The same as scaleid except calculated with the endf, rel | | | and rev number for the thermal moderator. (If requesting scaleid for a thermal moderator, | | | the output will be the scaleid for the first fast evaluation bound to the moderator.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | thermalEvals | The number of evaluations to be used in the fast region if the | | | current evaluation is a thermal moderator (In all other cases it is 0.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | date | The current date (The function can contain a second argument | | | giving the desired format for the date.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | loopindex | This substitution value that can only appear inside a loop element. | | | (It is the index of the element in the XML listing currently being processed. | | | The element can have an additional argument giving the offset. For example, | | | if the current index is 2 and the offset is 60, the value 62 is printed.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | loopnumber | A substitution value that can only appear inside a loop element, equal | | | to the number of times the content of the loop will be executed. | | | (The element can have an additional argument giving the offset.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | loopcount | A substitution value that can only appear inside a loop element; | | | the number of times the loop is being processed, including the current execution. | | | (This is different from loopindex if the loop has a restrict attribute. | | | The element can have an additional argument giving the offset.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | array_value | A substitution value that can only appear inside an arrayLoop element; | | | substituted by the current value of the loop variable | +-------------------+--------------------------------------------------------------------------------------------+ | | | | array_number | A substitution value that can only appear inside an arrayLoop element; | | | substituted by the current index of the array loop. | | | (The function can have an additional argument given the offset to be added | | | to the index. For example, if the current index is 2 and | | | the offset is 60, the value 62 is printed.) | +-------------------+--------------------------------------------------------------------------------------------+ | | | | array_length | A substitution value for the number of items in the value of | | | the element listed as the second argument. | +-------------------+--------------------------------------------------------------------------------------------+ In the case of a thermal moderator, the values for the fast evaluations to be bound with the moderator are often needed in the input file. Therefore, each of the function arguments listed in :numref:`tab-15` and :numref:`tab-17` can have a postfix of "fast1," "fast2" . . . . If this postfix is found, the corresponding value is retrieved not from the current evaluation but from the first, second . . . fast evaluation to be bound with this thermal moderator. If the current evaluation is not a thermal moderator, the postfix is ignored, and the value for the current evaluation is substituted. The field changedza can have postfix values of thermal1, thermal2 . . . in order to retrieve the value to use for the ID in the final library (changedzafast1, changedzafast2. . . would retrieve the ZA value of the evaluation used in the fast region). As the number of fast evaluations to be bound with a thermal moderator is not known while writing the template, the loop element ``thermalLoop`` is provided. In this loop, each argument can have a further postfix "_thermNum" which will be substituted by 1,2 . . . until all fast evaluations have been processed. For example, to list the endf mat number and the new scale ID for all fast evaluations of a given thermal moderator, the following snippet is used: :: For thermal moderator writeData(tag) with mat=writeData(endf) use Fast: writeData(tagfast_thermalNum) with endf mat=writeData(endffast_thermalNum) and new id of writeData(changedzafast_thermalNum) If preparing a coupled library, it is necessary to find a gamma evaluation associated with the current neutron evaluation. If the XML list contains neutron evaluations and gamma evaluations, the template parser will attempt to pair the two together based on the Z value. An evaluation is recognized as a gamma evaluation if the incident particle is a gamma and the evaluation contains File 23 data. An evaluation is recognized as a neutron evaluation if the incident particle is a neutron and the evaluation contains File 3 data. If an associated gamma evaluation is found, all the tags listed in :numref:`tab-15` and :numref:`tab-17` can have a postfix "gamma." If the postfix is found, the corresponding value is retrieved not from the current evaluation, but from the associated gamma evaluation. If the current evaluation is a thermal moderator, then the gamma evaluation is associated with the evaluations to be used in the fast region. In this case, a postfix of "gammathermal1," "gammathermal2" . . . must be used. The ``loop`` and the ``text`` element take an optional attribute ``restrict`` that selects only certain evaluations. The ``restrict`` attribute value is a comma-separated list of restrictions to be applied. If a restriction is prefixed with a "-" then the ``loop`` or ``text`` will only be executed for evaluations that do not fulfill the requested property. If a restriction is prefixed with a "+" then the loop or text will only be executed for evaluation that do fulfill the requested property. The "+" prefix is only needed if one or more restrictions are given in a restrict argument; otherwise, "+" is assumed. If more than one restriction is given and all restrictions are prefixed with a "+" then the body will only be executed for evaluations that fulfill **ALL** of the restrictions: i.e., a logical and is assumed; otherwise a logical or is assumed. A restriction can be constructed from all of the tags given in :numref:`tab-15` and :numref:`tab-17`. The postfix operators for thermal moderators and associated gamma evaluations are also allowed. The restriction is created by giving the desired tag followed by the desired value. For example "+file3(yes) +neutron(yes)" selects all neutron evaluations excluding thermal moderators. In addition, the following shortcut restrictions are also allowed: - ``gamma`` restricts to neutron evaluations that have an associated gamma evaluation - ``thermal`` restricts to thermal moderator evaluations - ``metastable`` restricts to meta stable nuclei - special restricts to nuclei for which the library ID is changed (These are the nuclei listed in the ``specialNuclei`` section of the configuration file.) - ``fastforthermal`` restricts to nuclei that are used as a fast evaluation for any of the thermal moderators in the listing Examples describing custom templates for ExSite are provided later in this section. .. _exsite-files: ExSite Files ------------ ExSite is used to generate the XML listings described above and to process the templates. It also serves as a GUI to read and create AMPX input files. The user input for the various AMPX modules and the templates is described in XML formatted files. The XML files for the module input are created from input descriptions in the module source files. The user template input is usually much simpler than for the module input and is created by hand. This section describes the xml formats used by ExSite, concluding with some examples of custom template files. Instructions on how to run ExSite are given in :numref:`using-exsite`. Module descriptions are given in an XML file with elements for each input parameter. The input parameters are subdivided into groups, where the parent group is the module itself. The input parameters are described in an element giving the name of the parameter. All input parameters can have the attributes listed in :numref:`tab-18`. Additional attributes may be available depending on the type. Each input element also can contain the elements listed in :numref:`tab-19`. Additional elements may be needed depending on the type of the input parameter. .. tabularcolumns:: |\Y{.25}|\Y{.15}|\Y{.20}|\Y{.40}| .. table:: Attributes available for input parameters :name: tab-18 :align: center :class: longtable +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | Name | Required | Possible choices | Description | +====================+=============+=====================+=========================================================================================+ | | | | | | type | yes | listed below | The type of the variable | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | required | no | yes | Indicates whether this language element is required | | | | | | | | | no | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | keyword | no | yes | Indicates whether a keyword is required to start the parameter, | | | | | as in **keyword=value** | | | | no | | | | | | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | nameUsed | no | | Value to use instead of the name if the parameters are **keyword=value** | | | | | (Required when spaces are needed in the keyword; the attribute can contain | | | | | one or more values in a space-separated list, and in this case, all values | | | | | in that list are recognized as valid keywords.) | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | attachMeaning\_\* | no | | If **nameUsed** supplies a space-separated list of keywords, attaches | | | | | different descriptions to each of these keywords (If desired, | | | | | a corresponding attribute **attachMeaning_keyword** must appear for each keyword listed | | | | | in **nameUsed**) | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | keywordSeparator | no | | The separator between **keyword=value** | | | | | | | | | | *Default is =* | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | caseSensitive | no | yes | The comparison for keywords to be entered as case sensitive. | | | | | | | | | no | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | before | no | Name of input | If this input object is used, it must appear before the indicated input object. | | | | | The indicated input object must be a required one. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | after | no | Name of input | If this input object is used, it must appear after the indicated input object. | | | | | The indicated input object must be a required one | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | appendEol | no | yes | Used when the input must end in an end of line | | | | | | | | | no | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | hide | no | yes | Used when the indicated input must be hidden from the user | | | | | | | | | no | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | deprecated | no | yes | Used when the parameters are deprecated (used in the text but not in the GUI) | | | | | | | | | no | *Default is no*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | depends | no | | Name of the input value this input depends on (The value can | | | | | contain +, -, \*, and /. In this case it is assumed that the input parameters | | | | | contain numbers combined to calculate the final value. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | compValue | no | | Value used to compare with resulting value if **depends** is set | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | compare | no | eq | | Used to compare the value of the dependent input object to **compValue**: | | | | | | | | | ne | | eq: compares **for equality** | | | | | | | | | gt | | ne: compares **that not equal** | | | | | | | | | lt | | gt: converts **compValue** and **value** of the dependent input object to a float and | | | | | | compares **as greater than** | | | | | | | | | | | lt: converts **compValue** and **value** of the dependent input object | | | | | | to a float and compares **as less than** | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | postfix | no | | A postfix to be added after the value | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | repeat | no | exsite_unlimited | If **exsite_unlimited**, the block can be repeated any number of times (If | | | | | a number, gives the number of times this block repeats. Otherwise it | | | | | is the name of a valid input object. The value of this input object is | | | | | converted to a number which gives the number of times this block repeats. | | | | | The value can contain +, -, \*, and \/. In this case, it is assumed that the | | | | | input parameters contain numbers combined to calculate the final value.) | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | repeatIsUpper | no | yes | Indicates that the value given in **repeat** is an upper limit only | | | | | | | | | no | | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | repeatAtLeastOnce | no | yes | Indicates that the value given in **repeat** is an upper limit only, but | | | | | the value must be given at least once | | | | no | | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | lineLength | no | | The allowed length of line. If -1, no line length limit is assumed. | | | | | Inherited from parent if not set. | | | | | | | | | | *Default is -1*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | allowComments | no | yes | Allows comments in the coding (Inherited from parent if not set.) | | | | | | | | | no | *Default is yes*. | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | groupTag | no | | A name that groups a number of input elements into a logical group; | | | | | used to display the input parameters together in the GUI | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | listPanel | no | yes | Determines how the input parameter is displayed in the GUI if it is | | | | | a group of input parameters | | | | no | | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ | | | | | | automaticEnable | no | yes | If this input parameter depends on the value of another parameter, | | | | | it will be unchecked in the GUI. If this attribute is set to "yes," | | | | no | then the input parameter will be selected in the GUI as soon as | | | | | it is applicable | +--------------------+-------------+---------------------+-----------------------------------------------------------------------------------------+ .. tabularcolumns:: |m{3.5cm}|m{1cm}|m{10cm}| .. table:: Child elements available for all input descriptions. :align: center :name: tab-19 +--------------------------+-------------+---------------------------------------------------------+ | | | | | Name | Required | Description | +==========================+=============+=========================================================+ | | | | | exsite_description | no | Relative path to an html description of the | | | | input object | +--------------------------+-------------+---------------------------------------------------------+ | | | | | exsite_default | no | Default value for this input object (Value | | | | must be valid in the context of the type attribute.) | +--------------------------+-------------+---------------------------------------------------------+ | | | | | exsite_required_position | no | Used when input object is required in a | | | | certain position (Position counting starts from 0.) | | | | | +--------------------------+-------------+---------------------------------------------------------+ | | | | | exsite_summary_line | no | A short description used in the GUI | +--------------------------+-------------+---------------------------------------------------------+ | | | | | exsite_icon_path | no | Relative path to an icon that can be used to | | | | indicate this input object in the GUI | +--------------------------+-------------+---------------------------------------------------------+ The following values are allowed for the type attribute: **exsite_string:** The input object described by this tag is assumed to be a string. It takes two additional attributes: - spaceAllowed, which can have values of yes and no and indicates whether the string can contain spaces - equalAllowed, which can have values of yes and no and indicates whether the string can contain equal signs **exsite_flag:** The input object describes a Boolean value. If the keyword is present, the Boolean value is set to *true*, otherwise to *false*. No additional attributes or elements are available for this type. **exsite_float/exsite_integer**: The input object describes a float or an integer object. No additional attributes are available. Additional elements available are: - exsite_max_required, which gives the upper bound for the number - exsite_min_required, which gives the lower bound for the number **exsite_key:** The input object describes a bare keyword that has different meanings depending on its value. It is different from exsite_flag since the result value must preserve the actual value given by the user. **exsite_boolean:** An input object that describes a Boolean value. The values *yes* or *true* are both recognized as setting the value to *true*. The values *no* or *false* both set the value to *false*. All other values are not accepted. **exsite_file:** This input object is similar to exsite_string; however, it denotes that this object is a file. The GUI can then display this object with a file selection box. The object has several additional attributes: - spaceAllowed, which can have values of *yes* and *no*; indicates whether the filename can contain spaces. - isNewFile, which can have values of *yes* and *no*; indicates whether the input refers to an existing file or whether it will create a new file. Based on this information, the GUI can determine whether to display a load or save dialog. - substituteDrive, which can have values of *yes* and *no*, and only takes effect if the underlying operating system is a windows system. If set to *yes*, then the drive letter of the default value is changed to the same drive where the Exsite program resides. **exsite_enum:** The input describes an enumeration type of input parameter. It takes one additional optional attribute and several required elements. The additional attribute is allowUser, and it takes a value of *yes* or *no*. If true, users are allowed to add values in addition to choosing one of the predefined options. The required elements are: - enum_type with attribute type. The value of type defines which types of values are allowed for the enumeration. - One or more exsite_enum_option elements listing the available choices. The element contains one additional element named exsite_description, which contains the description of this option. The remaining text is the value of the option. **exsite_array:** An input type describing an array of data. The element contains several optional attributes and one required element. The attributes are: - length giving the number of elements in the array. The value can take the same arguments as the repeat attribute listed in :numref:`tab-18`. The default is exsite_unlimited. - arrayStart character string indicating the start of array values. A value of "\\n" will be substituted by an end of line character. The default is to use no start value. - Separator gives a list of characters that separate array elements. The value "\\n" is substituted by a new line character, "\\t" by a tab character, and "\\r" by a hard return character. - arrayEnd is the same as arrayStart, except it denotes the end of array values. The default is to use no end value. The array terminates after the first character string that cannot be parsed as an array element. - arrayMarkeRequired is used if arrayEnd and/or arrayStart are given but are not required. - lengthAbsolute uses the absolute value stored in length to calculate the desired length of the array. .. In addition, the element takes one required element, array_type with required attribute type to indicate the type of data to be stored in the array. **exsite_close_depend:** An input value that can be used inside a group input element. It is used if group is closed by a certain character string. In some special cases, the occurrence of this character string does not indicate the end of the group input. This is a marker input not displayed in the GUI and depends on the attribute values of the group of which it is a part. This element takes one required attribute endBlockValue, giving the character string that can potentially end the group input. **exisite_group:** an input element that groups together other input elements. The available attributes are listed in :numref:`tab-20`. **exsite_fidas:** This is a special case of exsite_group for use with fidas type input. It describes a fidas array. The readBlockValue and readBlock attributes need to be explicitly given. Like other exsite_group elements, it contains input elements describing the various entries into a fidas array. The input elements can be any of the elements describing numbers of the correct type of the fidas array. .. tabularcolumns:: |m{2.5cm}|m{.8cm}|m{1.5cm}|m{10cm}| .. table:: Attributes available for exsite_group element. :align: center :name: tab-20 :class: longtable +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | Name | Required | Possible Values | Description | +====================+=============+====================+================================================================================+ | | | | | | endBlock | no | yes | Indicates whether the end of the group input | | | | | is indicated by a certain combination of characters If **closeOnRequired** | | | | no | is selected, then the group input is closed if all required input | | | | | elements have been given. | | | | closeOnRequired | | | | | | *Default is no*. | | | | | | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | readBlock | no | yes | Indicates whether the start of the group is | | | | | input, as indicated by a certain combination of characters. | | | | no | | | | | | *Default is no*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | canFold | no | yes | If set to "yes." then the group input can be | | | | | folded into the GUI. | | | | no | | | | | | *Default is no*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | readBlockValue\* | no | | If **readBlock** indicates that a certain character combination | | | | | starts the group, this attribute gives that character combination. | | | | | The value \\n is substituted by a new line character. | | | | | There can be more than one character string that opens | | | | | the group. If so, they must be supplied in more than one instance | | | | | of readBlockValue. Since XML only allows unique attribute names, | | | | | substitute \* with any value to make the attribute name unique. | | | | | | | | | | *The default is read *. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | endBlockValue\* | no | | If endBlock indicates that a certain character | | | | | combination ends the group, this attribute gives that character combination. | | | | | | | | | | The value \\n is substituted by a new line | | | | | character. There can be more than one character string that ends the group. | | | | | If so, they must be supplied n more than one instance of endBlockValue. | | | | | Since XML only allows unique attribute names, substitute \* with any | | | | | value to make the attribute name unique. | | | | | | | | | | *The default is end *. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | matchTag | no | yes | If there is more than one value for readBlockValue | | | | | and endBlockBalue, then ensure that matching pairs are used. | | | | no | Pairs are generated by order of appearance in the xml file. | | | | | | | | | | *Default is no*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | xmlOrder | no | yes | If set to "true," the order of the elements in | | | | | the input file must be the same order as given in the xml description. | | | | no | | | | | | *Default is no*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | discardBlockEnd | no | yes | If set to "true," the group is terminated | | | | | after the endBlockValue is read. However, the character | | | | no | string is not consumed and thus is available for parsing | | | | | for the next input element. | | | | | | | | | | *Default is no*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | noEmptyOnDiscard | no | yes | If set to "true," a group can consist of no | | | | | input elements in the input file. Otherwise, an empty group is flagged as an | | | | no | error. | | | | | | | | | | *Default is yes*. | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | closeDepends | no | | The name of the field is defined here if the | | | | | endBlockValue is present but does not indicate the end of the group unless a | | | | | certain field is set (The parser will automatically create a field of type | | | | | exsite\_close\_depend. This input type needs to be defined in the xml input | | | | | description.) | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | closeDepend\ | no | | If closeDepends is set, | | CompValue | | | the value of the field given in closeDepends that keeps the group open | | | | | | | | | | | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ | | | | | | closeDepend\ | no | | If closeDepends is set, | | Compare | | | the means to compare the field | | | | | | | | | | | +--------------------+-------------+--------------------+--------------------------------------------------------------------------------+ .. _compare-examples: Examples ~~~~~~~~ The following example is the input for the compare module, which uses FIDO style input: :: MODULE TO COMPARE FUNCTIONS ON TWO TAB1 FILES Centrm parameters 0 1 Number of words of core to allocate. 500000 Logical unit on which the first TAB1 File is located< 1 Logical unit on which the second TAB1 File is located 2 Logical unit where the difference TAB1 File 3 The element compare gives the name of the module and indicates that an end block is required, and it consists of end on the start of a new line. The centrm element is required for almost all modules. It indicates that all input following the name of the module until the end of the line is to be read into the input element centrm and to be hidden from the user. The input consists of one block of data terminated by the customary "t" at the end of the fidas block. This is defined in the element named x_1. The input consists of one fidas array (``-1$$``) which is described in the element named Core_Allocation. It indicates that the fidas array start after the character string ``-1$$`` is found. The fidas array group closes automatically if all children have been given. The attribute value for noEmptyOnDiscard indicates that the group fidas array can be omitted if all default values are desired. Finally, all the input elements are listed. They are all of type exsite_integer and need to appear in the same order as given in the xml description. .. _template-files: Template Files ~~~~~~~~~~~~~~ Template files to be used in ExSite are a combination of user input descriptions and templates used to generate input files. They consist of two sections. The first section contains an input description as used for module input description. It contains input parameters needed to execute the template. The second part consists of a template using a selected XML listing and the parameters supplied in the first section. The first section is an input description for keyword-based input. In addition to the fields supplied by the input description, the program automatically adds descriptions for: - "evals," an input field that takes file name of the file containing the XML listing of the abbreviated ENDF information - "input," an input field that describes the name of the input file to be created - If the input description contains a field named "neutgroups" and a field called "thermalgroups," a field name "iftg," denoting the first thermal group, is automatically created. In the template the fields of the user input are available in two ways: - A postfix of "_user" is added to list of arguments available to the writeData function listed in :numref:`tab-15` and :numref:`tab-17` - XML entities are added to the template created. XML entities can be accessed in an XML file by using "&entity;". Common examples are the entities normally provided for the ampersand and the lesser than sign, "&" and "<" respectively. However, since the template in given in Exsite template file does not have these values defined, "entity_fieldname" is used, which will be translated to an entity reference if expanding the template. writeData applies to the data for a given evaluation. Therefore, writeData only works inside a loop. On the other hand, entities are available throughout the template. In addition, if an input field of type "exsite_array" is encountered, additional user fields are created: - fieldname_number contains the number of fields in the array - fieldname_strip creates a list of the array with array markers, commas and end of line values stripped and substituted by spaces - fieldname_eol is the same as fieldname_strip, except instead of a space an eol is used There are two types of ExSite templates: one that gives a template, and one that uses previously defined templates. The later allows the user to string previously defined templates together. Inside the root element, which can have any desired name, the first type of template has two elements: - An element named *InputParameters* that contains the description for the user input. It is structured like a module input description. - An element named *InputData* that contains the template to be used. The following example creates a tabular list of all the evaluations (line numbers are not part of the template): .. code-block:: :linenos: Create a table of the xml data. Centrm parameters 0 yes yes no Do you want to list the gamma data
Tag name endf scale id yield gamma eval ---------------------------------------------------------- writeData(tag,10) writeData(endf,10) writeData(changedza,10) yes no writeData(taggamma,10) Tag name endf fast tag fast endf scale ID has yield gamma eval ---------------------------------------------------------------------------------- writeData(tag,10) writeData(endf,10) writeData(tagfast_thermalNum,10) writeData(endffast_thermalNum,10) writeData(changedzathermal_thermalNum,10) yes no writeData(taggammathermal_thermalNum,10)
.. The first element (InputParameters, line 5--28) lists parameters under the user control. The user can select whether the associated gamma evaluations should be listed. The second element (InputData, line 30--104) lists the template. The input file is opened on line 32. Please note that the "entity_input" type of referring to user input must be used here. The form "writeData(input_user)" will only work inside a loop. Line 35--37 writes the first part of the title. The text elements must be enclosed in a writeFile element, and "entity_input" type of referring to user input must be used outside a loop construct. The title should contain a reference to the gamma evaluation only if the user requests it. This is done with the exclude element in line 39--43. Inside a loop construct the more convenient restrict attribute for the text element could have been used. The loop element in line 53--63 writes the data for non-moderator evaluations. The restrict argument is used to restrict the loop to evaluations pertaining to incident neutrons and containing File 3 data but no File 7 data. Lines 54--55 are used to write out quantities available for all evaluations. Line 56 prints a yes if the evaluation contains photon production data. An evaluation contains photon production data if AWP0 is yes or if it contains File 12 or File 13 data. Since neither of the restrict arguments is prefixed by a "+,"evaluations are selected for which AWP0 is yes and/or which File 12 and/or File 13 exists. Line 56 prints a no if no photon production data exist. The "-" before each of the restrict arguments should be marked. Lines 68--69 print the tag name of the associated gamma evaluation if the user requested it and if an associated gamma evaluations exists. Lines 65--104 repeat the same tables, but they only select thermal moderators. In order to print all associated evaluations in the fast range, a thermalLoop construct is used in lines 84--103. The postfix "fast_thermalNum" that appears on many of the quantities refers to the desired quantity in the evaluation to be used in the fast region. The postfix "gammathermal_thermalNum" selects the gamma evaluation associated with the fast evaluation. .. !please check Line callouts above. Thanks! Additional examples can be found in the exsite folder, which contains templates to create all the major library types. .. _generating-mod-pdf-input: Generating Module Input and PDF Input ------------------------------------- Input instructions for modules are automatically translated from information supplied in the file containing the main program for a module. The comments are given in lines starting with "!!\*" for Fortran files and "\*!!" for C or C++ files. All lines starting with this special comment character are extracted and interpreted as an XML file.