%-------------------------- % @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