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.
60 lines
1.6 KiB
60 lines
1.6 KiB
%--------------------------
|
|
% @Author: Jingqiao Hu
|
|
% @Date: 2022-01-18 19:50:49
|
|
% @LastEditTime: 2022-01-26 20:57:19
|
|
%--------------------------
|
|
function [seeds, rho, cpnts] = generateCVT(opt_load_rho, optDesign, volfrac, ...
|
|
vF, nelx, nely, nelz, lx, microx)
|
|
|
|
microx_tmp = 20;
|
|
|
|
globalx = nelx * microx;
|
|
globaly = nely * microx;
|
|
globalz = nelz * microx;
|
|
maxx = globalx / 2; minx = -maxx;
|
|
maxy = globaly / 2; miny = -maxy;
|
|
maxz = globalz / 2; minz = -maxz;
|
|
|
|
if strcmp(optDesign, 'cantilever_hole')
|
|
optDesign = 'cantilever';
|
|
end
|
|
|
|
datapath = "data/mat/rho_"+optDesign+".mat";
|
|
if opt_load_rho==0
|
|
globalx = nelx * microx_tmp;
|
|
globaly = nely * microx_tmp;
|
|
globalz = nelz * microx_tmp;
|
|
|
|
rho = top3d(globalx, globaly, globalz, volfrac, vF,optDesign);
|
|
save(datapath, "rho");
|
|
else
|
|
load(datapath);
|
|
end
|
|
|
|
% if strcmp(optDesign, 'cantilever')
|
|
rho = flipud(rho);
|
|
% end
|
|
|
|
dx = lx / microx_tmp;
|
|
[gx, gy, gz] = meshgrid(minx+dx/2 : dx : maxx-dx/2, miny+dx/2 : dx : maxy-dx/2, ...
|
|
minz+dx/2 : dx : maxz-dx/2);
|
|
% gy = flipud(gy);
|
|
cpnts = [gx(:), gy(:), gz(:)];
|
|
|
|
eps = 0.35;
|
|
rho1 = rho .^ 2;
|
|
|
|
if strcmp(optDesign, 'Lshape')
|
|
eps = volfrac;
|
|
min_size = microx / 4;
|
|
max_size = microx / 2;
|
|
end
|
|
|
|
seeds = quadtree_nonregular(rho1, cpnts, maxx, minx, maxy, miny, maxz, minz, microx, eps);
|
|
|
|
% figure; scatter3(seeds(:,1), seeds(:,2), seeds(:,3), 'filled'); axis equal;
|
|
% view([10 25]);
|
|
% xlabel('x axis');
|
|
% ylabel('y axis');
|
|
% zlabel('z axis');
|
|
end
|