You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
27 lines
868 B
27 lines
868 B
3 years ago
|
%--------------------------
|
||
|
% @Author: Jingqiao Hu
|
||
|
% @Date: 2021-01-26 15:51:34
|
||
|
% @LastEditTime: 2021-01-27 11:21:56
|
||
|
|
||
|
% boundarys: [bottom, right, up, left]
|
||
|
%--------------------------
|
||
|
function [boundarys, inner] = micro_boundary(nelx)
|
||
|
|
||
|
nodenrs = reshape(1:(1 + nelx) * (1 + nelx), 1 + nelx, 1 + nelx);
|
||
|
alldofs = 1:2 * (nelx + 1) * (nelx + 1);
|
||
|
|
||
|
nbottom = nodenrs(end, :);
|
||
|
dbottom = reshape([2 * nbottom - 1; 2 * nbottom], 1, []);
|
||
|
|
||
|
nright = flip(nodenrs(1:end-1, end))'; % NOTE: REVERSE!
|
||
|
dright = reshape([2 * nright - 1; 2 * nright], 1, []);
|
||
|
|
||
|
nup = flip(nodenrs(1, 1:end-1)); % NOTE: REVERSE!
|
||
|
dup = reshape([2 * nup - 1; 2 * nup], 1, []);
|
||
|
|
||
|
nleft = nodenrs(2:end - 1, 1)';
|
||
|
dleft = reshape([2 * nleft - 1; 2 * nleft], 1, []);
|
||
|
|
||
|
boundarys = [dbottom, dright, dup, dleft];
|
||
|
inner = setdiff(alldofs, boundarys);
|
||
|
end
|