Bulk vs slab simulations

pyHRMC is designed to handle bulk cells or slab cells in a vacuum. While the package will automatically detect the cell type and handle periodic boundary conditions, several considerations and limitations exist.

For a slab cell, pyHRMC assumes that the vacuum space above and below the cell exist in the z-direction, and that the structure extends fully to the cell boundaries in the x and y directions. Additionally, the slab must be orthogonal to the z-axis for the package to correctly detect the cell thickness. When running a slab cell simulation and employing the Validators.DistancesCoordination constraint, be sure to set constraints for SurfaceCoordinationRange and SurfaceDistance in addition to BulkCoordinationRange.

For example:

"DistancesCoordination": {
    "MinDistances": {
        ("Al", "Al"): 2.0,
        ("Al", "O"): 1.6,
        ("O", "O"): 2.0
        },
    "BulkCoordinationRange": {"Al": {"Al" : [0, 0], "O": [4, 6]}, "O": {"Al": [3, 4], "O": [0, 0]} },
    "SurfaceCoordinationRange": {"Al": {"Al": [0, 0], "O": [4, 6]}, "O": {"Al": [2, 4], "O": [0, 0]} },
    "SurfaceDistance": 3
        }

In the event of performing a bulk HRMC simulation instead of a slab, the cell must also be orthogonal in the z-axis and assumes that there is not vacuum space in the z-direction. If the difference between the lattice dimension in the z-direction and the structure thickness along z is greater than 1, the package will incorrectly assume that the cell is a slab and may perform erroneously. The Validators.DistancesCoordination constraint should be used with only BulkCoordinationRange.