ironflow.nodes.pyiron_atomistics module

Ryven nodes specific to pyiron (or with ironflow improvements like an ipywidgets representation).

class ironflow.nodes.pyiron_atomistics.ApplyStrain_Node(params)[source]

Bases: OutputsOnlyAtoms

Apply strain on atomic structure supercell.

Inputs:

structure (pyiron_atomistics.Atoms): The atomic structure to strain. strain (float): The isotropic strain to apply, where 0 is unstrained. (Default is 0.)

Outputs:

(pyiron_atomistics.Atoms): A strained copy of the input structure.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
node_function(structure, strain, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'ApplyStrain'
class ironflow.nodes.pyiron_atomistics.AtomisticOutput_Node(params)[source]

Bases: DataNode

Select Generic Output item.

Inputs:
job (AtomisticGenericJob): A job with an output attribute of type

pyiron_atomistics.atomistics.job.atomistic.GenericOutput.

field (dtypes.Choice): Which output field to look at. Automatically populates once the job is valid.

Outputs:

output (numpy.ndarray): The selected output field.

color = '#c69a15'
init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(job, field, transpose, index, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'AtomisticOutput'
version: str = 'v0.1'
class ironflow.nodes.pyiron_atomistics.AtomisticTaker(params)[source]

Bases: JobTaker, ABC

property extra_representations: dict

When developing nodes, override this with any desired additional representations.

Note that standard representations exist for all output ports using the port’s label (where available), so if you add a key here matching one of those labels, you will override the standard output.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
outputs: List[NodeOutput]
valid_job_classes = [<class 'pyiron_atomistics.lammps.lammps.Lammps'>]
class ironflow.nodes.pyiron_atomistics.BeautifulHasGroups(has_groups: HasGroups | None)[source]

Bases: object

A helper class for giving classes that inherit from pyiron_base.HasGroups a more appealing representation in ipywidgets.

to_builtin(has_groups=None)[source]
class ironflow.nodes.pyiron_atomistics.BulkStructure_Node(params)[source]

Bases: OutputsOnlyAtoms

Generate a bulk atomic structure.

Inputs:

element (str): The atomic symbol for the desired atoms. (Default is “Fe”.) crystal_structure (str | None): Must be one of sc, fcc, bcc, hcp, diamond, zincblende,

rocksalt, cesiumchloride, fluorite or wurtzite.

a (float | None): Lattice constant. c (float | None): Lattice constant. c_over_a (float | None): c/a ratio used for hcp. Default is ideal ratio: sqrt(8/3). u (float | None): Internal coordinate for Wurtzite structure. orthorhombic (bool): Construct orthorhombic unit cell instead of primitive cell. (Takes precedence over cubic

flag when both are true.)

cubic (bool): Construct cubic unit cell if possible.

Outputs:

structure (pyiron_atomistics.Atoms): A mono-species bulk structure.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(element, crystal_structure, a, c, c_over_a, u, orthorhombic, cubic, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'BulkStructure'
class ironflow.nodes.pyiron_atomistics.CalcMD_Node(params)[source]

Bases: AtomisticTaker

Execute a static atomistic engine evaluation.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
outputs: List[NodeOutput]
title = 'CalcMD'
class ironflow.nodes.pyiron_atomistics.CalcMinimize_Node(params)[source]

Bases: AtomisticTaker

Execute a static atomistic engine evaluation.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
outputs: List[NodeOutput]
title = 'CalcMinimize'
class ironflow.nodes.pyiron_atomistics.CalcMurnaghan_Node(params)[source]

Bases: JobNode

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
outputs: List[NodeOutput]
title = 'CalcMurnaghan'
valid_job_classes = [<class 'pyiron_atomistics.atomistics.master.murnaghan.Murnaghan'>]
class ironflow.nodes.pyiron_atomistics.CalcStatic_Node(params)[source]

Bases: AtomisticTaker

Execute a static atomistic engine evaluation.

inputs: List[NodeInput]
outputs: List[NodeOutput]
title = 'CalcStatic'
class ironflow.nodes.pyiron_atomistics.ChangeSpecies_Node(params)[source]

Bases: OutputsOnlyAtoms

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
node_function(structure, species, indices, **kwargs)[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'ChangeSpecies'
class ironflow.nodes.pyiron_atomistics.Engine(params)[source]

Bases: DataNode

A parent class for engines (jobs).

color = '#5d95de'
inputs: List[NodeInput]
outputs: List[NodeOutput]
class ironflow.nodes.pyiron_atomistics.GBStructure_Node(params)[source]

Bases: OutputsOnlyAtoms

Generate a grain boundary structure based on the aimsgb.GrainBoundary module.

Inputs:

axis : Rotational axis for the GB you want to construct (for example, axis=[1,0,0]) sigma (int) : The sigma value of the GB you want to construct (for example, sigma=5) plane: The grain boundary plane of the GB you want to construct (for example, plane=[2,1,0]) initial_struct : Initial bulk structure from which you want to construct the GB (a pyiron

structure object).

delete_layerTo delete layers of the GB. For example, delete_layer=’1b0t1b0t’. The first

4 characters is for first grain and the other 4 is for second grain. b means bottom layer and t means top layer. Integer represents the number of layers to be deleted. The first t and second b from the left hand side represents the layers at the GB interface. Default value is delete_layer=’0b0t0b0t’, which means no deletion of layers.

add_if_distIf you want to add extra interface distance, you can specify add_if_dist.

Default value is add_if_dist=0.0

to_primitiveTo generate primitive or non-primitive GB structure. Default value is

to_primitive=False

uc_a (int): Number of unit cell of grain A. Default to 1. uc_b (int): Number of unit cell of grain B. Default to 1.

Outputs:

structure (pyiron_atomistics.Atoms): A GB based of the initial_struct.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
node_function(initial_struct, axis, sigma, plane, to_primitive, delete_layer, add_if_dist, uc_a, uc_b, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'GBStructure'
class ironflow.nodes.pyiron_atomistics.JobName_Node(params)[source]

Bases: DataNode

Create a sanitized job name, optionally with a floating point parameter.

Inputs:

name_base (str): The stem for the final name. (Default is “job”.) parameter (float|None): The parameter value to add to the name. ndigits (int|None): How many digits to keep from floating point values.

(Default 8. Use None to not round at all.)

special_symbols (dict|None): Not documented, sorry. (Default is None.)

Outputs:

job_name (str): The base plus float sanitized into a valid job name.

color = '#aabb44'
init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(name_base, parameter, ndigits, special_symbols, **kwargs)[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'JobName'
class ironflow.nodes.pyiron_atomistics.JobTable_Node(params)[source]

Bases: Node

color = '#aabb44'
init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
node_function(project, **kwargs) dict[source]
title = 'JobTable'
class ironflow.nodes.pyiron_atomistics.LammpsPotentials_Node(params)[source]

Bases: DataNode

Given a structure, returns the available compatible Lammps potential names.

color = '#aabb44'
init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(structure, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'LammpsPotentials'
class ironflow.nodes.pyiron_atomistics.Lammps_Node(params)[source]

Bases: Engine

Creates a Lammps engine (job) object for use by a calculator

property extra_representations: dict

When developing nodes, override this with any desired additional representations.

Note that standard representations exist for all output ports using the port’s label (where available), so if you add a key here matching one of those labels, you will override the standard output.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(project, structure, potential, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'Lammps'
update_event(inp=-1)[source]

Gets called when an input received a signal or some node requested data of an output in exec mode

version: str = 'v0.2'
class ironflow.nodes.pyiron_atomistics.MaterialProperty_Node(params)[source]

Bases: DataNode

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(property, source, *args, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'MaterialProperty'
update_event(inp=-1)[source]

Gets called when an input received a signal or some node requested data of an output in exec mode

class ironflow.nodes.pyiron_atomistics.OutputsOnlyAtoms(params)[source]

Bases: DataNode, ABC

A helper class that manages representations for nodes whose only output is a pyiron_atomistics.Atoms object.

Outputs:

structure (pyiron_atomistics.Atoms): An atomic structure.

color = '#aabb44'
property extra_representations: dict

When developing nodes, override this with any desired additional representations.

Note that standard representations exist for all output ports using the port’s label (where available), so if you add a key here matching one of those labels, you will override the standard output.

init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
outputs: List[NodeOutput]
class ironflow.nodes.pyiron_atomistics.Project_Node(params)[source]

Bases: DataNode

Create a pyiron project.

Inputs:

name (str): The name of the project. Will access existing project data under that name. (Default is “.”.)

Outputs:

project (pyiron_atomistics.Project): The project object.

color = '#aabb44'
property extra_representations: dict

When developing nodes, override this with any desired additional representations.

Note that standard representations exist for all output ports using the port’s label (where available), so if you add a key here matching one of those labels, you will override the standard output.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(name, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'Project'
update_event(inp=-1)[source]

Gets called when an input received a signal or some node requested data of an output in exec mode

class ironflow.nodes.pyiron_atomistics.PyironTable_Node(params)[source]

Bases: JobMaker

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>, <ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
n = 1
n_fixed_input_cols = 4
n_fixed_output_cols = 3
n_table_cols = 2
outputs: List[NodeOutput]
title = 'PyironTable'
valid_job_classes = [<class 'pyiron_base.jobs.datamining.TableJob'>]
class ironflow.nodes.pyiron_atomistics.Repeat_Node(params)[source]

Bases: OutputsOnlyAtoms

Repeat atomic structure supercell.

Inputs:

structure (pyiron_atomistics.Atoms): The structure to repeat periodically. all (int): The number of times to repeat it in each of the three bravais lattice directions.

Outputs:

structure (pyiron_atomistics.Atoms): A repeated copy of the input structure.

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
inputs: List[NodeInput]
node_function(structure, all, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'Repeat'
class ironflow.nodes.pyiron_atomistics.SlabStructure_Node(params)[source]

Bases: OutputsOnlyAtoms

Generate a surface based on the ase.build.surface module.

Parameters:
  • element (str) – The atomic symbol for the desired atoms. (Default is “Fe”.)

  • surface_type (str) – The string specifying the surface type generators available through ase (fcc111, hcp0001 etc.)

  • size (tuple) – Three-tuple of integers to give size (repetitions) of the surface

  • vacuum (float) – Length of vacuum layer added to the surface along the z direction

  • center (bool) – Tells if the surface layers have to be at the center or at one end along the z-direction.

  • orthogonal (bool) – Construct orthogonal cell.

  • a (float | None) – Lattice constant.

Returns:

Requested surface

Return type:

pyiron_atomistics.atomistics.structure.atoms.Atoms instance

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(element, surface_type, size_a, size_b, size_c, vacuum, center, orthogonal, a) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'SlabStructure'
class ironflow.nodes.pyiron_atomistics.SurfaceEnergy_Node(params)[source]

Bases: DataNode

init_inputs: List[NodeInputBP] = [<ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>, <ironflow.model.port.NodeInputBP object>]
init_outputs: List[NodeOutputBP] = [<ironflow.model.port.NodeOutputBP object>]
inputs: List[NodeInput]
node_function(bulk_structure, bulk_energy, surface_structure, surface_energy, **kwargs) dict[source]

Takes all data input as kwargs, must return a dict with one entry for each data output

outputs: List[NodeOutput]
title = 'SurfaceEnergy'
ironflow.nodes.pyiron_atomistics.pressure_input()[source]