Universe#

class montepy.Universe(number: montepy.types.NonNegativeInt, *, jit_parse: bool = False)#

Bases: Numbered_MCNP_Object

Class to represent an MCNP universe, but not handle the input directly.

Changed in version 1.5.0: Added jit_parse parameter

Parameters:
  • number (Integral) – The number for the universe, must be ≥ 0

  • jit_parse (bool) – Parse the object just-in-time, when the information is actually needed, if True.

Methods:

_add_children_objs(problem)

Adds all children objects from self to the given problem.

_delete_trailing_comment()

Deletes trailing comments from an object when it has been moved to another object.

_generate_default_node(value_type, default)

Generates a "default" or blank ValueNode.

_generate_default_tree(**kwargs)

Generate default syntax trees that can be exported once the object is not in an illegal state.

_grab_beginning_comment(padding[, last_obj])

_init_blank()

Initialize the object to a base state, before any parsing.

_parse_tree()

Takes the information from syntax tree and link it to the internal attributes.

_update_values()

Method to update values in syntax tree with new values.

claim(cells)

Take the given cells and move them into this universe, and out of their original universe.

clone([starting_number, step])

Create a new independent instance of this object with a new number.

format_for_mcnp_input(mcnp_version)

Creates a list of strings representing this MCNP_Object that can be written to file.

full_parse()

Fully parses this object, and disable just-in-time parsing for it.

grab_cells_from_jit_parse()

link_to_problem([problem, deepcopy])

Links the input to the parent problem for this input.

mcnp_str([mcnp_version])

Returns a string of this input as it would appear in an MCNP input file.

search(search)

Searches this input for the given string, or compiled regular expression.

soft_claim(cells)

validate()

Validates that the object is in a usable state.

wrap_string_for_mcnp(string, mcnp_version, ...)

Wraps the list of the words to be a well formed MCNP input.

Attributes:

_problem

cells

A generator of the cell objects in this universe.

comments

The comments associated with this input if any.

filled_cells

A generator of the cells that use this universe.

full_parsed

Whether this has been fully parsed, or is just JIT parsed.

leading_comments

Any comments that come before the beginning of the input proper.

number

The current number of the object that will be written out to a new input.

old_number

Original universe number from the input file.

parameters

A dictionary of the additional parameters for the object.

trailing_comment

The trailing comments and padding of an input.

static _generate_default_node(value_type: Type, default: str, padding: str = ' ', never_pad: bool = False)#

Generates a “default” or blank ValueNode.

None is generally a safe default value to provide.

Changed in version 1.0.0: Added never_pad argument.

Parameters:
  • value_type (Type) – the data type for the ValueNode.

  • default (str) – the default value to provide (type needs to agree with value_type)

  • padding (str) – the string to provide to the PaddingNode. If None no PaddingNode will be added.

  • never_pad (bool) – Whether to never add trailing padding. True means extra padding is suppressed.

Returns:

a new ValueNode with the requested information.

Return type:

ValueNode

static wrap_string_for_mcnp(string: str, mcnp_version: montepy.types.VersionType, is_first_line: bool, suppress_blank_end: bool = True) list[str]#

Wraps the list of the words to be a well formed MCNP input.

multi-line inputs will be handled by using the indentation format, and not the “&” method.

Parameters:
  • string (str) – A long string with new lines in it, that needs to be chunked appropriately for MCNP inputs

  • mcnp_version (tuple[Integral, Integral, Integral]) – the tuple for the MCNP that must be formatted for.

  • is_first_line (bool) – If true this will be the beginning of an MCNP input. The first line will not be indented.

  • suppress_blank_end (bool) – Whether or not to suppress any blank lines that would be added to the end. Good for anywhere but cell modifiers in the cell block.

Returns:

A list of strings that can be written to an input file, one item to a line.

Return type:

list[str]

_add_children_objs(problem)#

Adds all children objects from self to the given problem.

This is called from an _append_hook().

_delete_trailing_comment()#

Deletes trailing comments from an object when it has been moved to another object.

_generate_default_tree(**kwargs)#

Generate default syntax trees that can be exported once the object is not in an illegal state.

For leaves generally use self._generate_default_nod(<type, None). Save the tree to self._tree

Parameters:

**kwargs (dict) – Allows passing additional arguments through __init__ as **kwargs

_grab_beginning_comment(padding: list[PaddingNode], last_obj=None)#
Parameters:

padding (list[PaddingNode])

_init_blank()#

Initialize the object to a base state, before any parsing.

This should not setup the syntax tree though.

_parse_tree()#

Takes the information from syntax tree and link it to the internal attributes.

Use self._tree for this.

_update_values()#

Method to update values in syntax tree with new values.

Generally when make_prop_val_node() this is not necessary to do, but when make_prop_pointer() is used it is necessary. The most common need is to update a value based on the number for an object pointed at, e.g., the material number in a cell definition.

claim(cells: montepy.Cell | ty.Iterable[montepy.Cell])#

Take the given cells and move them into this universe, and out of their original universe.

Can be given a single Cell, a list of cells, or a Cells object.

Parameters:

cells (Cell | Iterable[Cell]) – the cell(s) to be claimed

Raises:

TypeError – if bad parameter is given.

clone(starting_number: montepy.types.PositiveInt = None, step: montepy.types.PositiveInt = None)#

Create a new independent instance of this object with a new number.

This relies mostly on copy.deepcopy.

Notes

If starting_number, or step are not specified starting_number(), and step() are used as default values, if this object is tied to a problem. For instance a Material will use problem.materials default information. Otherwise 1 will be used as default values

Added in version 0.5.0.

Parameters:
  • starting_number (Integral) – The starting number to request for a new object number.

  • step (Integral) – the step size to use to find a new valid number.

Returns:

a cloned copy of this object.

Return type:

type(self)

format_for_mcnp_input(mcnp_version: montepy.types.VersionType) list[str]#

Creates a list of strings representing this MCNP_Object that can be written to file.

Parameters:

mcnp_version (tuple[Integral, Integral, Integral]) – The tuple for the MCNP version that must be exported to.

Returns:

a list of strings for the lines that this input will occupy.

Return type:

list[str]

full_parse()#

Fully parses this object, and disable just-in-time parsing for it.

Returns:

The object will be mutated and fully parsed.

Return type:

None

grab_cells_from_jit_parse()#

Links the input to the parent problem for this input.

This is done so that inputs can find links to other objects.

Parameters:
  • problem (MCNP_Problem) – The problem to link this input to.

  • deepcopy (bool) – If this is occuring during a problem level deepcopy

mcnp_str(mcnp_version: montepy.types.VersionType = None) str#

Returns a string of this input as it would appear in an MCNP input file.

..versionadded:: 1.0.0

Parameters:

mcnp_version (tuple[Integral, Integral, Integral]) – The tuple for the MCNP version that must be exported to.

Returns:

The string that would have been printed in a file

Return type:

str

search(search: str | Pattern) bool#

Searches this input for the given string, or compiled regular expression.

Parameters:

search (str | Pattern) – The pattern to search for.

Returns:

Whether this

Return type:

bool

soft_claim(cells: montepy.Cell | ty.Iterable[montepy.Cell])#
Parameters:

cells (montepy.Cell | ty.Iterable[montepy.Cell])

validate()#

Validates that the object is in a usable state.

property _problem: MCNP_Problem#
property cells: Generator[Cell, None, None]#

A generator of the cell objects in this universe.

Returns:

a generator returning every cell in this universe.

Return type:

Generator[montepy.Cell, None, None]

property comments: list[PaddingNode]#

The comments associated with this input if any.

This includes all C comments before this card that aren’t part of another card, and any comments that are inside this card.

Returns:

a list of the comments associated with this comment.

Return type:

list

property filled_cells: Generator[Cell, None, None]#

A generator of the cells that use this universe.

Returns:

an iterator of the Cell objects which use this universe as their fill.

Return type:

Generator[Cell, None, None]

property full_parsed#

Whether this has been fully parsed, or is just JIT parsed.

Returns:

True iff this is fully parsed, False means this is still just-in-time parsed.

Return type:

bool

property leading_comments: list[PaddingNode]#

Any comments that come before the beginning of the input proper.

Returns:

the leading comments.

Return type:

list

property number#

The current number of the object that will be written out to a new input.

Return type:

int

property old_number#

Original universe number from the input file.

property parameters: dict[str, str]#

A dictionary of the additional parameters for the object.

e.g.: 1 0 -1 u=1 imp:n=0.5 has the parameters {"U": "1", "IMP:N": "0.5"}

Returns:

a dictionary of the key-value pairs of the parameters.

Return type:

dict[str, str]

Return type:

dict

property trailing_comment: list[PaddingNode]#

The trailing comments and padding of an input.

Generally this will be blank as these will be moved to be a leading comment for the next input.

Returns:

the trailing c style comments and intermixed padding (e.g., new lines)

Return type:

list