# PLaSK User Manual

#### Page Contents

- Transforms 3D

# Transforms 3D

Transforms always contain a single geometry object (possibly container) as their content and perform some transformation of this object.

<arrange3d> (or <arrange>)

  Corresponding Python class: `plask.geometry.Arrange3D`.

  Container in which replicates a single item in an equally-spaced row of its repetitions.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - d{X} – where {X} is the transverse axis name: Longitudinal component of the spacing vector, by which the adjacent repetitions are shifted. (float, µm)

    - d{Y} – where {Y} is the vertical axis name: Transverse dimension of the spacing vector, by which the adjacent repetitions are shifted. (float, µm)

    - d{Z} – where {Z} is the vertical axis name: Vertical dimension of the spacing vector, by which the adjacent repetitions are shifted. (float, µm)

    - count (`required`) – Number of repetitions of the container item.

  Contents:

    A single three-dimensional geometry object. Object to arrange in a row.

<clip3d> (or <clip>)

  Corresponding Python class: `plask.geometry.Clip3D`.

  Clip child object to given cuboid.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - back – back edge of the clipping cuboid (-INF by default)

    - front – front edge of the clipping cuboid (+INF by default)

    - left – left edge of the clipping cuboid (-INF by default)

    - right – right edge of the clipping cuboid (+INF by default)

    - bottom – bottom edge of the clipping cuboid (-INF by default)

    - top – top edge of the clipping cuboid (+INF by default)

  Contents:

    A single three-dimensional geometry object. Object to clip.

<extrusion>

  Corresponding Python class: `plask.geometry.Extrusion`.

  Extrusion of two-dimensional object into third dimension. 2D objects are defined in the plane defined by the transverse and vertical axes. Hence, the extrusion is performed into the longitudinal direction.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - length (`required`) – Length of the extrusion.

  Contents:

    A single two-dimensional geometry object.

<flip3d> (or <flip>)

  Corresponding Python class: `plask.geometry.Flip3D`.

  Mirror reflection of the object along specified axis.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - axis (`required`) – Name of the inverted axis (i.e. perpendicular to the reflection plane).

  Contents:

    A single three-dimensional geometry object.

<intersection3d> (or <intersection>)

  Corresponding Python class: `plask.geometry.Intersection3D`.

  Clip child object to given shape.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

  Contents:

    Two three-dimensional geometry objects. First is a child of this, second is a clipping shape (materials are not required in its leafs).

<lattice>

  Corresponding Python class: `plask.geometry.Lattice`.

  Lattice container that arranges its children in two-dimensional lattice.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - a{X} (`required`) – where {X} is the longitudinal axis name: Coordinate of the first basis vector. (float, µm)

    - a{Y} (`required`) – where {Y} is the transverse axis name: Coordinate of the first basis vector. (float, µm)

    - a{Z} (`required`) – where {Y} is the vertical axis name: Coordinate of the first basis vector. (float, µm)

    - b{X} (`required`) – where {X} is the longitudinal axis name: Coordinate of the second basis vector. (float, µm)

    - b{Y} (`required`) – where {Y} is the transverse axis name: Coordinate of the second basis vector. (float, µm)

    - b{Z} (`required`) – where {Y} is the vertical axis name: Coordinate of the second basis vector. (float, µm)

  Contents:

    `segments` tag followed by a three-dimensional geometry object.

    <segments>
      Contents:

        One or more polygons separated by `^` characters. Each polygon is formed by two or more vertices, separated by `;` characters. Each vertex consists of two space-separated integers.

  Example:

      <cartesian3d name="lattice" axes="xyz">
        <lattice ax="{sqrt(3)/2}" ay="0.5" az="0" bx="0" by="1" bz="0">
          <segments>
            -2 -2; -2 3; 2 3; 2 -2 ^
            -1 -1; -1 1; 1 1; 1 -1 ^
             1 4
          </segments>
          <cylinder material="AlN" radius="0.3" height="3"/>
        </lattice>
      </cartesian3d>

  Points described by the `segments` tag with the following content: `-2 -2; -2 3; 2 3; 2 -2 ^ -1 -1; -1 1; 1 1; 1 -1 ^ 1 4`, same as in listing with example. The first polygon (`-2 -2; -2 3; 2 3; 2 -2`) is the red rectangle. The second one (`-1 -1; -1 1; 1 1; 1 -1`) is green. Since the green polygin lies inside the red one, it is subtracted from it (XOR operation). Points lying at polygoin edges (both red and green rectangles) are always included in the final lattice. The last segment (`1 4`) comprises of only one point. It is also added to final figure (XOR operation).

  Lattice described by the example code. Top view. Each `(x,y)` point described in the `segments` tag (and showed in the previous figure) is combined with basis vectors `a` and `b` to obtain the location of the lattice contents instance.

<revolution>

  Corresponding Python class: `plask.geometry.Revolution`.

  Revolution of the two-dimensional object around its local vertical axis. The horizontal axis of the 2D object becomes a radial axis of the resulting compound cylinder. Vertical axes of the 2D object remains the vertical axis of the resulting block.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - auto-clip – If true item will be implicitly clipped to non-negative tran. coordinates. (bool, false by default)

  Contents:

    A single two-dimensional geometry object. If auto-clip is off, all the boundaries of its bounding box must have their horizontal coordinates larger or equal to zero i.e. all the object must be located at the right-hand half of the plane. If auto-clip is on, they will be implicitly clipped.

<mirror3d> (or <mirror>)

  Corresponding Python class: `plask.geometry.Mirror3D`.

  Object mirrored along specified axis. In other words this is transformed object together with its flipped version. The bounding box of the object cannot span at bot sides of zero along inverted axis.

  Attributes:

    - name – Object name for further reference.

    - role – Object role. Important for some solvers.

    - axis (`required`) – Name of the inverted axis (i.e. perpendicular to the reflection plane).

  Contents:

    A single three-dimensional geometry object.

<translation3D> (or <translation>)

  Corresponding Python class: `plask.geometry.Translation3D`.

  A simple shift of the object. Note that the bounding box is shifted as well, so in containers that place their items basing on their bounding boxes, this transformation will have no effect.

  Attributes:

    - name – Object name for further reference. In the `script` section, the object is available by `GEO` table, which is indexed by names of geometry objects.

    - axes – Specification of the axes. Most popular values are `xy`, `yz`, `rz` (letters are names of the horizontal and vertical axis, respectively).

    - role – Object role. Important for some solvers.

    - {X} – where {X} is the longitudinal axis name: Longitudinal position of the origin of transformed element. (float, µm)

    - {Y} – where {Y} is the transverse axis name: Transversal position of the origin of transformed element. (float, µm)

    - {Z} – where {Z} is the vertical axis name: Vertical position of the origin of transformed element. (float, µm)

  Contents:

    A single three-dimensional geometry object.