make_symmetry_adapted_polynomials#

casm.bset.polynomial_functions.make_symmetry_adapted_polynomials(
matrix_rep: list[ndarray],
variables: list[Variable],
variable_subsets: list[list[int]],
max_poly_order: int,
min_poly_order: int = 1,
orthonormalize_in_place: bool = True,
constraints: list[ExponentSumConstraint] = [],
eps: float = 1e-14,
verbose: bool = False,
) list[PolynomialFunction][source]#

Generate symmetry adapted polynomial functions

This method systematically enumerates monomial terms of varying order, applies group operations to construct symmetry adapted polynomials, and then orthogonalizes the results using the Gram-Schmidt method.

Notes

To support cluster expansion function construction, if any variable has a cluster_site_index which is not None, then the set of cluster_site_index is found, and monomials are checked to ensure that they have at least one variable on every site in the cluster. Any monomial which only has variables on a sub-cluster of sites is skipped.

Parameters:
  • matrix_rep (list[np.ndarray[np.float]]) – Matrix representation for the symmetry groups acting on the variables.

  • variables (list[Variable]) – Describes the variable elements of the vector that matrix_rep acts on.

  • variable_subsets (list[list[int]]) – The indices of Variable in variables which mix under application of symmetry, or permute as a group. A subset could be strain variables, displacement variables on a site, or occupant site basis functions on a site.

  • max_poly_order (int) – Maximum order (sum of exponents) in monomials of the generated polynomials.

  • min_poly_order (int = 1) – Minimum order (sum of exponents) in monomials of the generated polynomials.

  • True (orthonormalize_in_place =) – If True, orthonormalize symmetry adapted polynomials as they are generated, otherwise generate all symmetry adapted polynomials of a particular order and then orthonormalize.

  • constraints (list[ExponentSumConstraint]) – If any constraint is not satisfied, the candidate monomial is skipped. This can be used to ensure one and only one of mutually exclusive discrete variables is included in any monomial.

  • eps (float = 1e-14) – Tolerance used for identifying zeros in the matrix representations.

  • verbose (bool = False) – Print progress statements

Returns:

functions – A list of PolynomialFunction that are invariant to symmetry operations in matrix_rep and have been orthonormalized according to the scalar product defined in [TVandVen17].

Return type:

list[PolynomialFunction]