# Properties¶

## Structure properties¶

Given a structure and an appropriate
interaction model, it is possible to calculate
various properties. **atomicrex** provides the functionality
for computing a large number of different properties including
cohesive energy, lattice parameters, elastic properties, or atomic
forces. These properties can be compared to target values and added with an appropriate weight to the objective function.

The general format is demonstrated by the following code snippet:

```
<structures>
<fcc-lattice id="FCC">
<atom-type>Al</atom-type>
<lattice-parameter>4.0</lattice-parameter>
<properties>
<atomic-energy relax='true' fit='true' target='-3.36' relative-weight='100' residual-style='squared'/>
</properties>
...
</structures>
```

Here, a face-centered cubic (FCC) lattice is defined for
aluminum with an initial lattice parameter of 4.0. The cohesive energy
per atom (`<atomic-energy>`

) is specified as a property.

**atomicrex** distinguishes scalar properties and vector
properties. The majority of properties listed below is scalar in nature. The most common vector property
are the atomic forces. The behavior of a property can be customized
using the attributes of the `<property>`

element:

`fit`

: If this attribute is set to`True`

the property is included during fitting and thus added to the objective function.`target`

(scalar properties only): This attribute sets the target value for the property.`min`

,`max`

(scalar properties only): These attributes enable one to constrain the structural relaxation, which is halted if the bounds defined here are exceedeed. This can be useful to prevent optimization algorithms (in particular global optimizers) from crashing.`relative-weight`

: This attribute sets the weight by which the property contributes to the objective function; it corresponds to the parameter \(w_P\) in the definition of the objective function.`residual-style`

: This attribute determines how the residual associated with this property is calculated, which enters in the summation of the objective function. Possible values are`squared`

\[r = \left( \Delta A / \delta \right)^2\]`squared-relative`

\[r = \left( \Delta A / A^{\text{target}} \right)^2\]`absolute-diff`

\[r = \left| \Delta A / \delta \right|\]

Here, \(\Delta A = A^{\text{predicted}} - A^{\text{target}}\), where \(A^{\text{predicted}}\) and \(A^{\text{target}}\) are the predicted and target values of the property. The parameter \(\delta\) is the

`tolerance`

value specified for this property.`tolerance`

: The tolerance parameter \(\delta\) used in the calculation of the residual (compare`residual-style`

). The default value is 1.0. The usage of this parameter is discussed here.`relax`

: If this attribute is set to`True`

the structure is*relaxed before*the property is evaluated.`output`

: If this attribute is set to`True`

the property is written to standard output during the output phase and also during the fitting phase if`fit="True"`

.`output-all`

(vector properties only): If this attribute is set to`True`

the all components of the vector will be printed rather than just the residual of the entire vector.

The following table provides an overview of the various properties
that can be computed (and fitted). In addition to the properties
listed also the various parameters associated with the
pre-defined crystal structures can be
fitted such as `<atom-distance>`

(dimer structure), `<lattice-parameter>`

, `<ca-ratio>`

,
`<u-parameter>`

(wurtzite structure)
etc.

Element | Type | Description |
---|---|---|

`<atomic-energy>` |
Scalar | Energy per atom (in eV/atom) |

`<atomic-forces>` |
Vector | Atomic forces (in eV/A) |

`<bulk-modulus>` |
Scalar | Bulk modulus (in GPa) |

`<pressure>` |
Scalar | Hydrostatic pressure (in Bar) |

`<pxx>` |
Scalar | \(xx\) component of stress tensor (1st component in Voigt notation, in Bar) |

`<pyy>` |
Scalar | \(yy\) component of stress tensor (2nd component in Voigt notation, in Bar) |

`<pzz>` |
Scalar | \(zz\) component of stress tensor (3rd component in Voigt notation, in Bar) |

`<pyz>` |
Scalar | \(yz\) component of stress tensor (4th component in Voigt notation, in Bar) |

`<pxz>` |
Scalar | \(xz\) component of stress tensor (5th component in Voigt notation, in Bar) |

`<pxy>` |
Scalar | \(xy\) component of stress tensor (6th component in Voigt notation, in Bar) |

`<Cij>` |
Scalar | Stiffness tensor in Voigt notation;
`i` and `j` are integers between 1 and 6; e.g. `<C11>` , `<C12>` etc. (in GPa) |

The calculation of elastic properties, in particular of both “clamped ion” and “relaxed ion” elastic constants for a hexagonal lattice structure, is demonstrated in examples [1] and [2].

## Derived properties¶

Derived properties are not directly linked to a structure, but may be calculated from the properties of one or multiple structures. This allows one to fit to properties such as defect formation energies, surface energies and energy differences between different crystal structures. Even complicated properties like dislocation cores and phonon frequencies could be in principle represented.

The following code snippet demonstrates the general format:

```
<derived-properties>
<derived-property id="bccFe-Ev" unit="eV" fit="true" target="2.1" relative-weight="1"
equation="[Vac.total-energy] - 127*[bcc-Fe.atomic-energy] "/>
</derived-properties>
```

Here, the vacancy formation energy in BCC Fe is calculated by substracting the atomic energy of 127 Fe atoms from the total energy of a supercell containing a vacancy. Derived properties are defined in a separate xml block below the structure definitions. They can be grouped in the same way as structures. Usage of derived properties is demonstrated in this example.

Compared to “normal” properties, a derived property features two additional attributes:

`id`

: The name of the derived property.`equation`

: The equation is parsed by the math parser and used to calculate the value of the derived property. Structure properties are referred to using the format`[structure.property]`

.