generate_derived_fitting_data
- emmet.core.elasticity.generate_derived_fitting_data(structure, strains, stresses, symprec=SETTINGS.SYMPREC, tol=0.002)
Get the derived fitting data from symmetry operations on the primary fitting data.
It can happen that multiple primary deformations can be mapped to the same derived deformation from different symmetry operations. Ideally, this cannot happen if one use the same structure to determine all the symmetry operations.
However, this is not the case in atomate, where the deformation tasks are determined based on the symmetry of the structure before the tight relaxation, which in this function the structure is the relaxed structure. The symmetries can be different.
In atomate2, this is not a problem, because the deformation tasks are determined based on the relaxed structure.
To make it work for all cases, the stress for a derived deformation is the average of all derived stresses, each corresponding to a primary calculation. In doing so, we also check to ensure that: 1. only independent derived deformations are used 2. for a specific derived strain, a primary deformation is only used (mapped)
once to obtain the average
- Args:
structure: relaxed structure strains: primary strains stresses: primary stresses symprec: symmetry operation precision tol: tolerance for comparing strains and also for determining whether the
deformation corresponds to the train is independent. The elastic workflow use a minimum strain of 0.005, so the default tolerance of 0.002 should be able to distinguish different strain states.
- Returns:
derived_deforms: derived deformations derived_strains: derived strains derived_stresses: derived Cauchy stresses derived_2nd_pk_stresses: derived second Piola-Kirchhoff stresses
- Return type:
tuple[list[Deformation],list[Strain],list[Stress],list[Stress]]- Parameters:
structure (Structure)
strains (list[Strain])
stresses (list[Stress])
tol (float)