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.