Force constants for large systems are difficult to extract

Hi All,

I am trying to use the hiphive code to compute the second and third order force constants for a system of 84 atom unit cell. The training data set are generated with MD. The issues here is that even with 4.0A and 2.5A for 2 body and 3 body cutoff radius respectively, the number of parameters goes beyond 20,000. With 2body cutoff of 5A and 4A for the 3 body cutoff, the total number of parameters goes above 200,000.

I was wondering if any one knows a trick to deal with large systems, in particular, to reduce the total number of parameters.

Thanks for your help. Yusuf.

Hi,
200,000 parameters with cutoffs [5,4] sounds a lot and so maybe your missing some symmetry in the structure. Does you system have any symmetries, or is it P1?
Sometimes the symmetries are not detected from the input structure to the ClusterSpace due to numerical tolerances, you can try increasing the tolerance symprec via e.g. ClusterSpace(..., symprec=1e-2). (Also make sure to give the relaxed structure to ClusterSpace and not structure with displacements)

Regarding cutoffs you can try to skip including third-order three-body terms via the Cutoffs object, see here, this can drastically reduce the number of parameters. It could look something like

from hiphive.cutoffs import Cutoffs

cutoff_matrix = [[5.0, 4.0],
                 [0.0, 0.0]]
cutoffs = Cutoffs(cutoff_matrix)
cs = ClusterSpace(prim, cutoffs)
cs.print_tables()

But there is no way around the fact that for a low symmetry structure with 80 atoms in the primitive cell you will end up with a lot of parameters when extracting third-order FCs.

Thank you very much for your response. With symprec=1e-5 (the default), the code was finding no symmetry which gives rise to the high number of parameters. When I sent the symprec to 1e-3, a P3_221 was found and the number of parameters has drastically reduced to about 12k.

Thank you very much for the suggestions.
Yusuf.