0
$\begingroup$

I have a set of 2D points and wish to test it for hyperuniformity.
As I've learned from papers, the good idea is to calculate structure factor $S(\mathbf {q})$ and test it for $$\lim _{\mathbf {q} \to 0}S(\mathbf {q} )=0$$ Is it right that for set of 0-sized points we need to use:

$$S(\mathbf {q} )={\frac {1}{N}}\left|\sum _{j=1}^{N}\mathrm {e} ^{-i\mathbf {q} \cdot \mathbf {R} _{j}}\right|^{2}$$ ?

For $\mathbf {q}$ close to $0$ I always get $S(\mathbf {q}) \sim N$.
Looks like that there is a big mistake, so how to do it correctly?

$\endgroup$
2
  • $\begingroup$ At $q=0$, $S(0)=N$ as can be seen from the formula do you should not include it (sometime the structure factor is defined without the zero point). Assuming you average over the angle if the system is homogeneous, you will also have bad statistics close to $q=0$, so, you should just look at a region in $q$ here you have enough statistics. I might also recall you that for a (periodic) system of size $L$, the meaningful wavector are $2\pi n/L$ with $n\in \mathbb{Z}$ and not any $q \in \mathbb{R}$. This effectively gives you a $q_{min}$ which increases wirh system size. $\endgroup$
    – Syrocco
    Commented May 27 at 0:15
  • $\begingroup$ Indeed checking for hyperuniformity usually requires you to go to large system size and perform a relatively carefully study of the scaling of the steucture factor with increasingly small $q$ or equivalently increasingly large system. Usually you would tey to see if the structure factor goes to 0 as a power law with some exponent..and that this power law is consistent for different system size and continues over a large range of values (at least 1.5 - 2 decades) $\endgroup$
    – Syrocco
    Commented May 27 at 0:21

0