-
Notifications
You must be signed in to change notification settings - Fork 7
/
Copy pathexamples.py
79 lines (74 loc) · 2.84 KB
/
examples.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
import numpy as np
example = 1
nelx, nely = 60, 30
# ~~~~~~~~~~~~ Examples ~~~~~~~~~~~~~#
if(example == 1): # tip cantilever
exampleName = 'TipCantilever'
physics = 'Structural'
meshType = 'rectGeom';
matProp = {'E':1.0, 'nu':0.3};
desiredVolumeFraction = 0.6; # between 0.1 and 0.9
ndof = 2*(nelx+1)*(nely+1);
force = np.zeros((ndof,1))
dofs=np.arange(ndof);
fixed = dofs[0:2*(nely+1):1];
force[2*(nelx+1)*(nely+1)-2*nely+1, 0 ] = -1;
nonDesignRegion = None;
symXAxis = {'isOn':False, 'midPt':0.5*nely};
symYAxis = {'isOn':False, 'midPt':0.5*nelx};
elif(example == 2): # mid cantilever
exampleName = 'MidCantilever'
physics = 'Structural';
meshType = 'rectGeom';
matProp = {'E':1.0, 'nu':0.3};
desiredVolumeFraction = 0.5; # between 0.1 and 0.9
ndof = 2*(nelx+1)*(nely+1);
force = np.zeros((ndof,1))
dofs=np.arange(ndof);
fixed = dofs[0:2*(nely+1):1];
force[2*(nelx+1)*(nely+1)- (nely+1), 0 ] = -1;
nonDesignRegion = None;
symXAxis = {'isOn':True, 'midPt':0.5*nely};
symYAxis = {'isOn':False, 'midPt':0.5*nelx};
elif(example == 3): # MBBBeam
desiredVolumeFraction = 0.5; # between 0.1 and 0.9
exampleName = 'MBBBeam'
physics = 'Structural'
meshType = 'rectGeom';
matProp = {'E':1.0, 'nu':0.3};
ndof = 2*(nelx+1)*(nely+1);
force = np.zeros((ndof,1))
dofs=np.arange(ndof);
fixed= np.union1d(np.arange(0,2*(nely+1),2), 2*(nelx+1)*(nely+1)-2*(nely+1)+1);
force[2*(nely+1)+1 ,0]=-1;
nonDesignRegion = None;
symXAxis = {'isOn':False, 'midPt':0.5*nely};
symYAxis = {'isOn':False, 'midPt':0.5*nelx};
elif(example == 4): # Michell
desiredVolumeFraction = 0.4; # between 0.1 and 0.9
exampleName = 'Michell'
physics = 'Structural'
meshType = 'rectGeom';
matProp = {'E':1.0, 'nu':0.3};
ndof = 2*(nelx+1)*(nely+1);
force = np.zeros((ndof,1))
dofs=np.arange(ndof);
fixed=np.array([ 0,1,2*(nelx+1)*(nely+1)-2*nely] ); # ,2*(nelx+1)*(nely+1)-2*nely+1,
force[nelx*(nely+1)+2 ,0]=-1;
nonDesignRegion = None;
symXAxis = {'isOn':False, 'midPt':0.5*nely};
symYAxis = {'isOn':True, 'midPt':0.5*nelx};
elif(example == 5): # DistributedMBB
exampleName = 'Bridge'
physics = 'Structural'
meshType = 'rectGeom';
desiredVolumeFraction = 0.45; # between 0.1 and 0.9
matProp = {'E':1.0, 'nu':0.3};
ndof = 2*(nelx+1)*(nely+1);
force = np.zeros((ndof,1))
dofs=np.arange(ndof);
fixed= np.array([ 0,1,2*(nelx+1)*(nely+1)-2*nely+1,2*(nelx+1)*(nely+1)-2*nely] );
force[2*nely+1:2*(nelx+1)*(nely+1):8*(nely+1),0]=-1/(nelx+1);
nonDesignRegion = None # s{'x>':0, 'x<':nelx,'y>':nely-1,'y<':nely}; # None #
symXAxis = {'isOn':False, 'midPt':0.5*nely};
symYAxis = {'isOn':True, 'midPt':0.5*nelx};