計算二維緊束縛模型費公尺面和nesting程式新思路

2021-09-29 07:31:19 字數 2345 閱讀 6370

這裡使用隨機生成的方法在多邊形布里淵區生成k點座標,優點是程式好寫,缺點是計算量很大

下面這段**是生成六邊形內的點,是用數學方法生成的

function kpos=getkpoints(n)

a = 4.18879028;

%theta = linspace(0,2*pi,7);

%plot(a*cos(theta),a*sin(theta),'r-');

i = 0;

%n = 2000;

kpos = ;

%hold on

while i < n

x = 2*rand(1,2)-1;

if (abs(x(1)) + abs(x(2))/sqrt(3) ) <= 1 && abs(x(2)) <= sqrt(3)/2

x =a*x;

kpos = [kpos;x];

%plot(x(1),x(2),'b.');

i = i+1;

endend

這裡計算nesting完全按照標準公式,就是兩重迴圈,  時間複雜度o(n^2)

delta = 0.001;

t = 0.026;

sus = ;

n = 2000;

k=getkpoints(n);

n = length(k);

for i=1:n

x = 0;

for j=1:n

hk1=hamiltonian_tas2_k(k(j,1),k(j,2));

[~,ek1]=eig(hk1);

e1 = ek1(1,1);

f1 = (exp(e1/t)+1)^-1;

hk2=hamiltonian_tas2_k(k(j,1)+k(i,1),k(j,2)+k(i,2));

[~,ek2]=eig(hk2);

e2 = ek2(1,1);

f2 = (exp(e2/t)+1)^-1;

x = x+ f1*(1-f2)/(e2 - e1 + 1i*delta);

endsus =[sus,x];

enda = 4.18879028;

theta = linspace(0,2*pi,7);

plot(a*cos(theta),a*sin(theta),'r-');

hold on

x = k(:,1);

y = k(:,2);

z = real(sus);

[x,y,z]=griddata(x,y,z,linspace(min(x),max(x))',linspace(min(y),max(y)),'v4');%插值

% pcolor(x,y,z);shading interp

% figure,contourf(x,y,z) %等高線圖

figure,surf(x,y,z);%三維曲面

% plot(a*cos(theta),a*sin(theta),zeros(1,7),'r-');

最後根據二維不規則離散點mesh實際有一步插值動作

與下面的矩形均勻採用對比

二維計算幾何複習

二維計算幾何 宣告 由於本人較弱,並不能保證以下內容的100 正確 歡迎大佬來挑錯 基本定義 1 struct point 6 point double xx,double yy 9 10 typedef point vec 1112 vec operator vec v1,vec v2 15 ve...

ansys軸對稱模型之二維模型

軸對稱問題 當用三維模型 計算時間太長時,將它轉化為二維模型,x軸為徑向方向,y軸為旋轉軸 軸對稱模型幾何建立有兩大要素,分別為 1.平面必須建立在全域性座標平面x y的第 一 二象限內 2.全域性座標y軸為原始模型的旋轉軸,全域性座標x軸為原始模型的徑向方向 如果是從外部匯入三維模型,則需要它先用...

計算幾何 圓 二維模板

include include include include include define fir first define sec second using namespace std const double eps 1e 8 const double pi acos 1.0 int dcmp...