montepy.Transform#

class montepy.Transform(input: Input | str = None, pass_through: bool = False, number: int = None)#

Bases: DataInputAbstract, Numbered_MCNP_Object

Input to represent a transform input (TR).

Changed in version 1.0.0: Added number parameter

Parameters:
  • input (Union[Input, str]) – The Input object representing the input

  • number (int) – The number to set for this object.

  • pass_through (bool)

Methods:

_add_children_objs(problem)

Adds all children objects from self to the given problem.

_class_prefix()

The text part of the input identifier.

_delete_trailing_comment()

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

_grab_beginning_comment(padding[, last_obj])

_has_classifier()

Whether or not this class supports particle classifiers.

_has_number()

Whether or not this class supports numbering.

_update_values()

Method to update values in syntax tree with new values.

clone([starting_number, step])

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

equivalent(other, tolerance)

Determines if this is effectively equivalent to another transformation

format_for_mcnp_input(mcnp_version)

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

link_to_problem(problem)

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.

update_pointers(data_inputs)

Connects data inputs to each other

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

classifier

The syntax tree object holding the data classifier.

comments

The comments associated with this input if any.

data

The syntax tree actually holding the data.

displacement_vector

The transform displacement vector

hidden_transform

Whether or not this transform is "hidden" i.e., has no number.

is_in_degrees

The rotation matrix is in degrees and not in cosines

is_main_to_aux

Whether or not the displacement vector points from the main origin to auxilary origin, or vice versa.

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

The transform number used in the original file

parameters

A dictionary of the additional parameters for the object.

particle_classifiers

The particle class part of the input identifier as a parsed list.

prefix

The text part of the input identifier parsed from the input.

prefix_modifier

The modifier to a name prefix that was parsed from the input.

rotation_matrix

The rotation matrix

trailing_comment

The trailing comments and padding of an input.

static _class_prefix()#

The text part of the input identifier.

For example: for a material the prefix is m

this must be lower case

Returns:

the string of the prefix that identifies a input of this class.

Return type:

str

static _has_classifier()#

Whether or not this class supports particle classifiers.

For example: kcode doesn’t allow particle types but tallies do allow it e.g., f7:n

  • 0 : not allowed

  • 1 : is optional

  • 2 : is mandatory

Returns:

True if this class particle classifiers

Return type:

int

static _has_number()#

Whether or not this class supports numbering.

For example: kcode doesn’t allow numbers but tallies do allow it e.g., f7

Returns:

True if this class allows numbers

Return type:

bool

static wrap_string_for_mcnp(string, mcnp_version, is_first_line, suppress_blank_end=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) – 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

_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.

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

padding (list[PaddingNode])

_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.

clone(starting_number=None, step=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 (int) – The starting number to request for a new object number.

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

Returns:

a cloned copy of this object.

Return type:

type(self)

equivalent(other, tolerance)#

Determines if this is effectively equivalent to another transformation

Parameters:
  • other (Transform) – The transform to compare self again.

  • tolerance (float) – the allowable difference in any attribute to still be considered equivalent.

Returns:

True iff all transform elements in both are within the tolerance of each other.

Return type:

bool

format_for_mcnp_input(mcnp_version: tuple[int]) list[str]#

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

Parameters:

mcnp_version (tuple[int]) – 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

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.

mcnp_str(mcnp_version: tuple[int] = None)#

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

..versionadded:: 1.0.0

Parameters:

mcnp_version (tuple[int]) – 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

update_pointers(data_inputs)#

Connects data inputs to each other

Parameters:

data_inputs (list) – a list of the data inputs in the problem

Returns:

True iff this input should be removed from problem.data_inputs

Return type:

bool, None

validate()#

Validates that the object is in a usable state.

property _problem: MCNP_Problem#
property classifier#

The syntax tree object holding the data classifier.

For example this would container information like M4, or F104:n.

Returns:

the classifier for this data_input.

Return type:

ClassifierNode

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 data#

The syntax tree actually holding the data.

Returns:

The syntax tree with the information.

Return type:

ListNode

property displacement_vector#

The transform displacement vector

Return type:

numpy.array

property hidden_transform#

Whether or not this transform is “hidden” i.e., has no number.

If True this transform was created from a fill card, and has no number.

Return type:

bool

property is_in_degrees#

The rotation matrix is in degrees and not in cosines

Return type:

bool

property is_main_to_aux#

Whether or not the displacement vector points from the main origin to auxilary origin, or vice versa.

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#

The transform number used in the original file

Return type:

int

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:

unknown

Rytpe:

dict

property particle_classifiers#

The particle class part of the input identifier as a parsed list.

This is parsed from the input that was read.

For example: the classifier for F7:n is :n, and imp:n,p is :n,p This will be parsed as a list: [<Particle.NEUTRON: 'N'>, <Particle.PHOTON: 'P'>].

Returns:

the particles listed in the input if any. Otherwise None

Return type:

list

property prefix#

The text part of the input identifier parsed from the input.

For example: for a material like: m20 the prefix is m. this will always be lower case. Can also be called the mnemonic.

Returns:

The prefix read from the input

Return type:

str

property prefix_modifier#

The modifier to a name prefix that was parsed from the input.

For example: for a transform: *tr5 the modifier is *

Returns:

the prefix modifier that was parsed if any. None if otherwise.

Return type:

str

property rotation_matrix#

The rotation matrix

Return type:

np.array

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