# SurfaceConfiguration¶

class SurfaceConfiguration(central_region, electrode, equivalent_electrode_length=None)

A one-probe configuration consisting of a central region coupled to an electrode.

Parameters: central_region (BulkConfiguration) – The surface region. electrode (BulkConfiguration) – The bulk region below the surface. equivalent_electrode_length (PhysicalQuantity of type length Default: Length of the actual electrode given.) – The length to use for the equivalent electrode region in the central region.
class RestartInformation(initial_state, initial_spin, restart_step_length, max_diff)
count(value) → integer -- return number of occurrences of value
index(value[, start[, stop]]) → integer -- return first index of value.

Raises ValueError if the value is not present.

initial_spin

Alias for field number 1

initial_state

Alias for field number 0

max_diff

Alias for field number 3

restart_step_length

Alias for field number 2

SurfaceConfiguration.addTags(tags, indices=None)

Add a set of tags to atoms matching a collection of indices.

Parameters: tags (list | str) – The list of tags to add to matching atoms. indices (list | int | None) – The list of indices to match atoms against. Default: All indices.
SurfaceConfiguration.atomicMasses()
Returns: The masses of the atoms in the configuration. PhysicalQuantity of type mass
SurfaceConfiguration.atomicNumbers()
Returns: The list of atomic numbers associated with the elements. list of ints
SurfaceConfiguration.bonds()
Returns: An array with the the two atom indices for each bond along with the vector which periodic images this bond connects. array
SurfaceConfiguration.bravaisLattice()
Returns: The bravais lattice of the central region. BravaisLattice
SurfaceConfiguration.calculator()
Returns: The calculator attached to the configuration, i.e. the calculator that will be used for both simulation and analysis. Calculator
SurfaceConfiguration.cartesianCoordinates()

The Cartesian coordinates of the atoms in the the central region of the configuration.

Returns: The Cartesian coordinates. PhysicalQuantity of type length
SurfaceConfiguration.centralRegion()

The central region of the surface.

Returns: The central region. BulkConfiguration
SurfaceConfiguration.copy()
Returns: A copy of the current configuration. MoleculeConfiguration | BulkConfiguration | DeviceConfiguration | SurfaceConfiguration
SurfaceConfiguration.crossSection()

Return the cross-sectional area of the central region.

Returns: The cross-sectional area float
SurfaceConfiguration.dielectricRegions()
Returns: The dielectric regions in the central region. list of BoxRegion | SphereRegion | TubeRegion
SurfaceConfiguration.electrodeDisplacement()

The displacement of the BravaisLattice of the electrode in the C-direction in order to match the BravaisLattice of the central_region.

Returns: The electrode displacement. PhysicalQuantity of type length
SurfaceConfiguration.electrodes()

The electrode of the surface as a list.

Returns: The electrode belonging to this configuration. list of BulkConfiguration
SurfaceConfiguration.electrodesDisplacement()

The displacement of the BravaisLattice of the electrode in the C-direction in order to match the BravaisLattice of the central_region.

Returns: The electrode displacement. PhysicalQuantity of type length
SurfaceConfiguration.elements()
Returns: The elements in configuration. list of PeriodicTableElement
SurfaceConfiguration.externalPotential()
Returns: The external potential present in the central region. AtomicShift | AtomicCompensationCharge
SurfaceConfiguration.findBonds(fuzz_factor=1.1, pair_selection=None)

Find bonds in the configuration according to the combined covalent radii of the element pairs, multiplied with a fuzz factor. Optionally, find bonds only between two specified sub-groups of atoms. The bonds are primarily used in to set the topology of bonded potentials in the TremoloX-calculator.

Parameters: fuzz_factor (float) – The factor by which the covalent radii are multiplied to determine the cutoff distance for a bond. pair_selection (list(2) of type PeriodicTableElement, list of int, or str.) – Specifies two groups between which bonds are detected. Selectable groups are elements, index lists, tag names, or None (all atoms). By default bonds between all atoms in the configuration are taken into account.
SurfaceConfiguration.fixedSpinDirections()
Returns: The fixed spin directions for the configuration. FixedSpin | None
SurfaceConfiguration.fractionalCoordinates()
Returns: The fractional coordinates of the central region. array of floats
SurfaceConfiguration.ghostAtoms()
Returns: The list of ghost atoms of the central region. list of ints
SurfaceConfiguration.improperDihedralIndices()
Returns: The list of atom indices for each improper dihedral or None if no improper dihedrals are defined. Improper dihedrals are mainly used in bonded force fields. numpy array | None
SurfaceConfiguration.indicesFromTags(tags=None)

List the indices associated with a given collection of tags.

Parameters: tags (list | str) – A list of tags for which all matching indices should be extracted. The list of indices corresponding to the specified tag name(s). list of ints
SurfaceConfiguration.metallicRegions()
Returns: The metallic regions in the central region. list of BoxRegion | SphereRegion | TubeRegion
SurfaceConfiguration.metatext()
Returns: The metatext of the object or None if no metatext is present. str | unicode | None
SurfaceConfiguration.nlprint(stream=None)

Print a string containing an ASCII table useful for plotting the AtomicConfiguration object.

Parameters: stream (python stream) – The stream the table should be written to. Default: NLPrintLogger()
SurfaceConfiguration.numberOfAtoms()
Returns: The total number of atoms in the configuration. int
SurfaceConfiguration.periodicBoundaries()
Returns: The periodic boundary conditions of the configuration. list
SurfaceConfiguration.primitiveVectors()
Returns: The primitive lattice vectors. PhysicalQuantity of type length
SurfaceConfiguration.removeTags(tags=None, indices=None, purge=False)

Remove a set of tags from atoms matching a collection of indices.

Parameters: tags (list | str) – The list of tags to add to matching atoms. Default: All tags. indices (list | int) – The list of indices to match atoms against. Default: All indices. purge (bool) – When removing tags from the configuration, delete the tag completely when not associated with any atoms anymore. Default: False
SurfaceConfiguration.repeat(na=1, nb=1, nc=1, stack_systems=False)

Repeat the derived class with the integer values na, nb, and nc along the three primitive unit cell vectors. The repeated system is constructed with a cell of the type UnitCell.

Parameters: na (int) – The repetition along the a-axis. Default: 1 nb (int) – The repetition along the b-axis. Default: 1 nc (int) – The repetition along the c-axis. Default: 1 stack_systems (bool) – If True the basis atoms are repeated as a unit, i.e. a0 and b0 are repeated as: a0,b0,a1,b1, ... If False the basis atom are repeated individually, i.e. a0 and b0 are repeated as: a0,a1,..., b0,b1,... Default: True The repeated system.
SurfaceConfiguration.setBonds(bond_list, skip_checks=False)

Set the bonds on the configuration. The bonds are primarily used in to set the topology of bonded potentials in the TremoloX-calculator.

Parameters: bond_list (list(n, 2) | list(n, 5) | None.) – A list which contains for each bond the indices of the two connected atoms. Optionally, three more integers can be specified for each bond, which must be between -1 and 1, and which denote to which neighboring image cell the bond is connected. Without these additional indices, the minimum image convention is obeyed. indices (int(n) | None) – The indices of the atoms to set the list of bonds. skip_checks (bool) – Skip argument type checking and just directly assign the value.
SurfaceConfiguration.setCalculator(calculator, initial_state=None, initial_spin=None)

Attach a Calculator to the configuration which will be used in calculations involving the configuration.

Parameters: calculator (Calculator) – The calculator object that should be attached to the configuration. initial_state (SurfaceConfiguration with a calculator | None) – The initial state to be used for this configuration. Default: No initial state. initial_spin (InitialSpin | None) – The initial InitialSpin object to be used for this configuration. Default: No initial spin.
SurfaceConfiguration.setCartesianCoordinates(cartesian_coordinates, indices=None, skip_checks=False)

Set the Cartesian coordinates of the atoms in the central region. Changes in the coordinates of the electrode extension will be synchronized with the corresponding coordinates in the electrodes.

Parameters: cartesian_coordinates (PhysicalQuantity of type length) – The new coordinates of the atoms in each image. indices (list) – The indices of the atoms to set the positions of. Default: All indices. skip_checks (bool) – Skip argument type checking and just directly assign the value. Default: False
SurfaceConfiguration.setDielectricRegions(dielectric_regions)

Set the dielectric regions for the central region.

Parameters: dielectric_regions (list of BoxRegion | SphereRegion | TubeRegion) – The list of dielectric regions to set.
SurfaceConfiguration.setExternalPotential(external_potential)

Set an external potential on the configuration that will be used in calculations involving the configuration.

Parameters: external_potential (AtomicShift | AtomicCompensationCharge) – The external potential to apply.
SurfaceConfiguration.setImproperDihedralIndices(improper_dihedral_indices)

Set the list of atom indices for each improper dihedral in bonded force fields.

Parameters: improper_dihedral_indices (list or array with shape (m, 4) | None) – The list of the 4 indices defining the connectivity for each improper dihedral or None to delete the current dihedral connectivity.
SurfaceConfiguration.setMagneticField(magnetic_field)

Set local magnetic field. The spins will be forced to point in the directions given by the magnetic_field object. The magnetic field can be defined for each atom. This only has an effect for Noncollinear or Spinorbit calculations.

Parameters: magnetic_field (FixedSpin) – The magnetic field to be applied.
SurfaceConfiguration.setMetallicRegions(metallic_regions)

Set the metallic regions for the central region.

Parameters: metallic_regions (list of BoxRegion | SphereRegion | TubeRegion) – The list of metallic regions to set.
SurfaceConfiguration.setMetatext(metatext)

Set a given metatext string on the object.

Parameters: metatext (str | unicode | None) – The metatext string that should be set. A value of “None” can be given to remove the current metatext.
SurfaceConfiguration.setVelocities(velocities=None, skip_checks=False)

Function to set velocities on the configuration.

Parameters: velocities (PhysicalQuantity of type velocity | None) – The velocities to set on the configuration. Has the dimensionality nx3. Default: None skip_checks (bool) – Skip argument type checking and just directly assign the value. Default: False
SurfaceConfiguration.symbols()
Returns: The element symbols of the configuration. list of str
SurfaceConfiguration.tags(indices=None)

List the tags associated with a given collection of indices. The list returned is the set union of tags associated with the given indices. If no collection of indices is provided, then all tags on the configuration are returned.

Parameters: indices (list | int) – The indices to check. Default: All indices. The set union of tags present on the provided indices. set
SurfaceConfiguration.uniqueElements()
Returns: The unique elements contained in the configuration. list of PeriodicTableElement
SurfaceConfiguration.update(force_restart=False)

A self-consistent solution is generated, using the currently set calculator.

Parameters: force_restart (bool) – Force the self-consistent calculation to restart. Default: False
SurfaceConfiguration.velocities()
Returns: The velocities of the atoms. Has the dimensionality nx3. PhysicalQuantity of type velocity

## Notes¶

ATK recognizes four types of atomic geometries: