CASMcode
CASMcode copied to clipboard
enumerate ConfigenumSiteDoF with min_nonzero or max_nonzero parameters
when I run " casm enum --method ConfigEnumSiteDoFs -s dis.json", where dis.json including: { "confignames" : [ "SCEL1_1_1_1_0_0_0/0" ], "dof" : "disp", "max" : 0.1, "max_nonzero" : 1, "min" : 0.0, "increment": 0.1, "output_configurations" : true, "output_configurations_options" : { "json" : true, "path" : "config_enum.disp.out.json" }, "output_dir" : "disp_dof_space_analysis", "print_dof_space_and_quit" : false, "sym_axes" : true, "exclude_homogeneous_modes": true } However, I can't understand the "max_nonzero"(integer (optional, default = axes.rows()) Maximum number of coordinate amplitudes that are allowed to be nonzero. Must be less than or equal to the "axes" dimension. This is the explanation I see about it in the tutorials), and it will influence the number of generated configurations. I try to understand it by setting different value, but I can't find the rules.
"min_nonzero"
and "max_nonzero"
specify the minimum and maximum number of DoF values that are nonzero. For example, if you are enumerating displacements of a supercell that contains 8 atoms, there are 24 (3x8) DoF values to vary. By setting "min_nonzero"
to 12, you can ensure that every enumerated configuration has at least 12 non-zero displacements. Alternatively, if you set "max_nonzero"
to 1, you will only enumerate configurations that have a single non-zero displacement value and 23 of the values will be zero.
The filter is applied to the coordinate system within which enumeration is performed. So, if you are using non-standard or symmetry-adapted axes for enumeration, "min_nonzero"
and "max_nonzero"
count non-zero amplitudes along these alternative axes.
"min_nonzero"
and"max_nonzero"
specify the minimum and maximum number of DoF values that are nonzero. For example, if you are enumerating displacements of a supercell that contains 8 atoms, there are 24 (3x8) DoF values to vary. By setting"min_nonzero"
to 12, you can ensure that every enumerated configuration has at least 12 non-zero displacements. Alternatively, if you set"max_nonzero"
to 1, you will only enumerate configurations that have a single non-zero displacement value and 23 of the values will be zero.The filter is applied to the coordinate system within which enumeration is performed. So, if you are using non-standard or symmetry-adapted axes for enumeration,
"min_nonzero"
and"max_nonzero"
count non-zero amplitudes along these alternative axes.
Thanks for your reply. I tested a configuration that contains 6 atoms, there are 18 DoF values to vary. And I set "max_nonzero" to 2, Theoretically, each enumerate configurations contain at most 2 non-zero displacement values. However, I got many configurations that more than 2 non-zero displacement values. I show some configurations as follows: SCEL1_1_1_1_0_0_0/0 (this is initial configuration and don't have displacement) 1.00000000 0.00000000 0.00000000 4.81485488 2.99893618 2.99893618 2.40742744 -2.99893618 2.99893618 2.40742744 Al Cu 4 2 Direct 0.15902750 0.49999999 0.18194501 Al 0.84097251 0.49999999 0.81805499 Al 0.34097251 0.81805497 0.50000000 Al 0.65902750 0.18194500 0.50000000 Al 0.25000000 -0.00000001 0.00000000 Cu 0.75000000 -0.00000001 0.00000000 Cu
SCEL1_1_1_1_0_0_0/1 (4 Al atoms generate displacements along xz or xy directions ) 1.00000000 0.00000000 0.00000000 4.81485488 2.99893618 2.99893618 2.40742744 -2.99893618 2.99893618 2.40742744 Al Cu 4 2 Direct 0.15313285 0.49999999 0.19373431 Al 0.84686716 0.49999999 0.80626569 Al 0.34686716 0.80626568 0.50000000 Al 0.65313285 0.19373429 0.50000000 Al 0.25000000 -0.00000001 0.00000000 Cu 0.75000000 -0.00000001 0.00000000 Cu SCEL1_1_1_1_0_0_0/66 (All atoms generate displacements along xyz directions) 1.00000000 0.00000000 0.00000000 4.81485488 2.99893618 2.99893618 2.40742744 -2.99893618 2.99893618 2.40742744 Al Cu 4 2 Direct 0.15445885 0.51330762 0.17777466 Al 0.83640387 0.51330762 0.81388464 Al 0.33640387 0.81388462 0.51330763 Al 0.65445885 0.17777465 0.51330763 Al 0.25913729 -0.00913730 -0.00913728 Cu 0.75913729 -0.00913730 -0.00913728 Cu
The filter is applied to the coordinate system within which enumeration is performed. So, if you are using non-standard or symmetry-adapted axes for enumeration,
"min_nonzero"
and"max_nonzero"
count non-zero amplitudes along these alternative axes.
This means that if you apply a single symmetry-adapted displacement mode to the crystal, the resulting set of atomic displacements will not be sparse (there will be many non-zero displacements).
Thanks for your very useful reply.