function [x, y, z, u, v, w] = rectNSgrid()
global nX nY nZ nuX nvY nwZ h b l
b=input('Input channel width:');
h=input('Input channel height:');
l=input('Input channel length:');
nX = input('Input number of x divisions');
nY = input('Input number of y divisions');
nZ = input('Input number of z divisions');
x=zeros(nX,nY,nZ);
y=zeros(nX,nY,nZ);
z=zeros(nX,nY,nZ);
xu=zeros(nuX,nvY,nwZ);
yv=zeros(nuX,nvY,nwZ);
zw=zeros(nuX,nvY,nwZ);
for i = 1:nX
x(i,:,:) = b*(i-1)/(nX-1);
end
for j = 1:nY
y(:,j,:) = l*(j-1)/(nY-1);
end
for k = 1:nZ
z(:,:,k) = h*(k-1)/(nZ-1);
end
nuX = nX-1;
nvY = nY-1;
nwZ = nZ-1;
for i=1:nuX
xu(i,:,:) = (x(i,:,:)+x(i+1,:,:))/2; % Here is the place it shows the error
end
for j=1:nvY
yv(:,j,:) = (y(:,j,:)+y(:,j+1,:))/2;
end
for k=1:nwZ
zw(:,:,k) = (z(:,:,k)+z(:,:,k+1))/2;
end
而我该如何绘制MATLAB中的网格点?我需要在矩形刚性网格上求解Navier-Stokes方程。速度控制量与x-CV的宽度相差半个单元边缘距离。??? MATLAB中的下标赋值不匹配错误,同时定义交错网格
谢谢你的回复。建议的代码有帮助。但是对于矩形网格它的工作方式是否同样好?我的意思是我使用b = 2,l = 290,h = 1(根据我使用的通道的尺寸)并且将nX = 10; nY = 50和nZ = 5,它不显示非常规则的网格。另外我需要问一下,我需要网格来求解Navier-Stokes方程,其中网格中的每个单独点将被分配一个特定的位置或速度值。用这种方式定义的网格可以做到这一点吗?谢谢。 – user2542878
它应该与非正方形网格一样工作,但对于“轴线正方形”,您不会在图表上看到它,而是将“轴线等于”。为了存储你的位置(和速度),只需复制X,Y,Z(和uX,uY,uZ)来存储你的数据。现在对于你的Navier-Stokes问题,如果你正在通过有限差分求解它,这种方式非常好,如果你打算使用有限元素,那么你需要一个三角网格。 –
我只使用有限差异。所以这对我很有用。非常感谢。 – user2542878