FixStrain¶
- class FixStrain(x=False, y=False, z=False)¶
- When used as input argument for a stress calculation the stress is set to zero for the indicated components of the stress tensor. - When used as input argument for an optimization the strain is kept fixed along the indicated directions. - Parameters:
- x (bool) – Indicating constraint along the x-axis. Default: False 
- y (bool) – Indicating constraint along the y-ayis. Default: False 
- z (bool) – Indicating constraint along the z-azis. Default: False 
 
 - frozenDegreesOfFreedom(local_atoms=None)¶
- Parameters:
- local_atoms (list of int | None) – The group of atoms from which the frozen degrees of freedom should be calculated, e.g. a thermalized group of atoms. Default: All atoms. 
- Returns:
- The number of degrees of freedom that are frozen by this constraint object. 
- Return type:
- int 
 
 - toList()¶
- Returns:
- The constraints as a list of Booleans 
- Return type:
- list of type bool 
 
 - uniqueString()¶
- Return a unique string representing the state of the object. 
 
Usage Examples¶
Optimize a bulk system by constraining along the x- and z-axis:
# Set up lattice
lattice = SimpleCubic(3.731*Angstrom)
# Define elements
elements = [Silver, Cerium]
# Define coordinates
cartesian_coordinates = [[ 0.    ,  0.    ,  0.    ],
                         [ 1.8655,  1.8655,  1.8655]]*Angstrom
# Set up configuration
bulk_configuration = BulkConfiguration(
    bravais_lattice=lattice,
    elements=elements,
    cartesian_coordinates=cartesian_coordinates
    )
bulk_configuration.setCalculator(LCAOCalculator())
# Run the optimization
constraints = [FixStrain(x=True, y=False, z=True)]
bulk_configuration = OptimizeGeometry(
        bulk_configuration,
        constraints=constraints,
        )