-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathexamples.py
68 lines (60 loc) · 2.89 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
import numpy as np
import time
import matplotlib.pyplot as plt
# ~~~~~~~~~~~~ Examples ~~~~~~~~~~~~~#
def getExampleBC(example, nelx, nely):
if(example == 1): # tip cantilever
exampleName = 'TipCantilever'
bcSettings = {'fixedNodes': np.arange(0,2*(nely+1),1),\
'forceMagnitude': -1.,\
'forceNodes': 2*(nelx+1)*(nely+1)-2*nely+1, \
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':False, 'midPt':0.5*nely},\
'YAxis':{'isOn':False, 'midPt':0.5*nelx}}
elif(example == 2): # mid cantilever
exampleName = 'MidCantilever'
bcSettings = {'fixedNodes': np.arange(0,2*(nely+1),1),\
'forceMagnitude': -1.,\
'forceNodes': 2*(nelx+1)*(nely+1)- (nely+1),\
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':True, 'midPt':0.5*nely},\
'YAxis':{'isOn':False, 'midPt':0.5*nelx}}
elif(example == 3): # MBBBeam
exampleName = 'MBBBeam'
fn= np.union1d(np.arange(0,2*(nely+1),2), 2*(nelx+1)*(nely+1)-2*(nely+1)+1);
bcSettings = {'fixedNodes': fn,\
'forceMagnitude': -1.,\
'forceNodes': 2*(nely+1)+1,\
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':False, 'midPt':0.5*nely},\
'YAxis':{'isOn':False, 'midPt':0.5*nelx}}
elif(example == 4): # Michell
exampleName = 'Michell'
fn = np.array([ 0,1,2*(nelx+1)*(nely+1)-2*nely] )
bcSettings = {'fixedNodes': fn,\
'forceMagnitude': -1.,\
'forceNodes': nelx*(nely+1)+2,\
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':False, 'midPt':0.5*nely},\
'YAxis':{'isOn':True, 'midPt':0.5*nelx}}
elif(example == 5): # DistributedMBB
exampleName = 'Bridge'
fixn = np.array([ 0,1,2*(nelx+1)*(nely+1)-2*nely+1,2*(nelx+1)*(nely+1)-2*nely] );
frcn = np.arange(2*nely+1, 2*(nelx+1)*(nely+1), 8*(nely+1))
bcSettings = {'fixedNodes': fixn,\
'forceMagnitude': -1./(nelx+1.),\
'forceNodes': frcn ,\
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':False, 'midPt':0.5*nely},\
'YAxis':{'isOn':True, 'midPt':0.5*nelx}}
elif(example == 6): # Tensile bar
exampleName = 'TensileBar'
fn =np.union1d(np.arange(0,2*(nely+1),2), 1);
midDofX= 2*(nelx+1)*(nely+1)- (nely);
bcSettings = {'fixedNodes': fn,\
'forceMagnitude': 1.,\
'forceNodes': midDofX,\
'dofsPerNode':2};
symMap = {'XAxis':{'isOn':True, 'midPt':0.5*nely},\
'YAxis':{'isOn':False, 'midPt':0.5*nelx}}
return exampleName, bcSettings, symMap