Example:Timoshenko Locking
From Nemesis
u=[] r=[2,3,4,5,10,20,50,100,500,1000] for beam in ['EULER','TIM2F','TIM2R','TIM3F','TIM3R']: t=[] for ratio in r: print 'Solving for type %s and r=%4i.'%(beam,ratio) domain.dim(2) material.uniElastic(1,1000,0.) section.rect(1,1.0,20./ratio) # nodes node.add(1,0.,0.) for i in range(20): node.add(2*i+2,i+0.5, 0.) node.add(2*i+3,i+1.0, 0.) # beams for i in range(20): if beam=='EULER': element.beam2e(i+1,2*i+1,2*i+3,1,1) elif beam=='TIM2F': element.beam2t(i+1,2*i+1,2*i+3,1,1,2) elif beam=='TIM2R': element.beam2t(i+1,2*i+1,2*i+3,1,1,1) elif beam=='TIM3F': element.beam3t(i+1,2*i+1,2*i+3,2*i+2,1,1,3) elif beam=='TIM3R': element.beam3t(i+1,2*i+1,2*i+3,2*i+2,1,1,3) node.fix(1,1) node.fix(1,2) node.fix(1,6) lc.define(1) load.node(21,2,1.0) analysis.static() analysis.run(1,1) t.append(node.data(41)['disp'][1]) domain.clear() u.append(t) # Results for i in range(1,5): for j in range(len(r)): u[i][j]=u[i][j]/u[0][j] for j in range(len(r)): u[0][j]=1.0 print print "=====================================================" print "|Ratio |Tip Displacement (normalized) |" print "-----------------------------------------------------" print "| | EULER |TIM2F | TIM2R | TIM3F | TIM3R |" print "=====================================================" for i in range(len(r)): print '|%9.3f|'%(r[i]), for j in range(5): print ' %6.4f'%(u[j][i]), print '|' print "=====================================================" import pylab from numpy import array x=array(r) y1=array(u[0]) y2=array(u[1]) y3=array(u[2]) y4=array(u[3]) y5=array(u[4]) pylab.semilogx(x,y1,'k',x,y2,'r:o',x,y3,'r-',x,y4,'g:o',x,y5,'g-') pylab.legend(('Euler-Bernulli', 'Timoshenko 2 nodes, 2 Gauss-points', 'Timoshenko 2 nodes, 1 Gauss-point','Timoshenko 3 nodes, 3 Gauss-points', 'Timoshenko 3 nodes, 2 Gauss-points'), 'upper right', shadow=True) pylab.xlabel('log (L/h)') pylab.ylabel('w/wEB') pylab.grid(True) pylab.show()