-
Notifications
You must be signed in to change notification settings - Fork 26
Typical benchmark problems in topology optimization
Benchmark problems consist in a set of computationally difficult problems, either from real-world applications or randomly generated, used by researchers in order to test the efficiency of optimization solvers. In this page you will find the most typical ones in the world of topology optimization. We will show the computational domain and the boundary conditions.
But before proceeding... it is important to define a general way to define the boundary conditions in Swan.
In relation with the computational domain definition, we should refer to the tutorial file Swan/Tutorials/Tutorial00_Mesh.mlx.
Regarding the boundary conditions definition, we should refer to the tutorial file Swan/Tutorials/TopOptTestTutorial.m, and more specifically to the function bc = createBoundaryConditions(obj). Here we show an extract:
% ...
xMax = max(obj.mesh.coord(:,1));
yMax = max(obj.mesh.coord(:,2));
isDir1 = @(coor) abs(coor(:,1))==0;
isForce1 = @(coor) (abs(coor(:,1))==xMax & abs(coor(:,2))>=0.35*yMax & abs(coor(:,2))<=0.65*yMax);
sDir{1}.domain = @(coor) isDir1(coor);
sDir{1}.direction = [1,2];
sDir{1}.value = 0;
sPL{1}.domain = @(coor) isForce1(coor);
sPL{1}.direction = 2;
sPL{1}.value = -1;
% ...
In this case, we have defined the boundary conditions of a 2D Cantilever Beam.
In general terms:
- The isDiri variable defines the region of the boundary where the "i"th set of Dirichet boundary conditions will be defined.
- The sDir{i}.direction and sDir{i}-value variables define the directions (x/y/z) and the value of the imposed Dirichlet condition, respectively. In the case of multiple directions condition (i.e [1,2]) one may write also two values, this is [0,0.01]. However, if both values are the same, i.e [0,0], it is enough to type the value just once.
- The isForcej variable defines the region of the boundary where the "j"th set of Neumann boundary conditions will be defined.
- The sPL{j}.direction and sPL{j}.value variables define the directions and the value of the imposed Neumann condition.
$\mathbf{u} = [0,0] \ \forall \ (x,y)\in\Gamma_D$ $\mathbf{f} = [0,-1] \ \forall \ (x,y)\in\Gamma_N$
$u_y = 0 \ \forall \ (x,y)\in\Gamma_D^{(1)}$ $\mathbf{u} = [0,0] \ \forall \ (x,y)\in\Gamma_D^{(2)}$ $\mathbf{f} = [0,-1] \ \forall \ (x,y)\in\Gamma_N$
$\mathbf{u} = [0,0] \ \forall \ (x,y)\in\Gamma_D$ $\mathbf{f} = [0,-1] \ \forall \ (x,y)\in\Gamma_N$
Custom sidebar example