How do I calculate the pair distribution function, g(r), if I know a list of particle centres?
21 ビュー (過去 30 日間)
古いコメントを表示
I have a list of particle centre of mass in x, y, and z directions. I want to calculate the pair distribution function, g(r) that basically tells about the probability of finding a particle next to the reference particle. I followed the procedure given in this link How to calculate the pair correlation function g(r) (emory.edu), but didn't get the result as expected. This is what I tried.
count = 0;
for i = 1:np % np is the number of particles
for j = (i+1):np
dist = sqrt((x(i)-x(j))^2 + (y(i)-y(j))^2 + (z(i)-z(j))^2) % x, y, and z are the particle centre of mass
for r = 1:del_r:50 % for now i used del_r=1
volume(r) = 4*pi*r^2*del_r;
if (dist < r) && (dist < (r + del_r))
count = count + 1; % the problem is to count the number of particles that satisfy this if condition.
tot_count(r) = count/np;
end
end
end
cnt_ovr_vol = tot_count./volume;
num_den = np/(nx*ny*nz); %nx = ny = nz = 100;
g_r = (cnt_ovr_vol./num_den);
end
Does my code make sense as per the procedure in the link?
2 件のコメント
Amirsaman Eghtesad
2022 年 8 月 2 日
According to the link, you have to change (dist < r) to (dist >r).
Hisay Lama
2023 年 7 月 6 日
You need to take care of edge correction, mentioned here:
They used a function checkquadrant for that.
回答 (1 件)
Aditya Shah
2022 年 10 月 11 日
Hi!
The following MATLAB File Exchange example, explains how to calculate the Pair distribution Function g(r):
0 件のコメント
参考
カテゴリ
Help Center および File Exchange で Triangulation Representation についてさらに検索
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!