2418
.pdf0.1,0.1,2.25
0.,0.1,2.25
0.,0.,2.50
0.1,0.,2.50
0.1,0.1,2.50
0.,0.1,2.50
1,2,3,4,5,6,7,8
5,6,7,8,9,10,11,12
9,10,11,12,13,14,15,16
13,14,15,16,17,18,19,20
17,18,19,20,21,22,23,24
21,22,23,24,25,26,27,28
25,26,27,28,29,30,31,32
29,30,31,32,33,34,35,36
33,34,35,36,37,38,39,40
37,38,39,40,41,42,43,44
1,111
2,111
3,111
4,111
130,100.
131,100
DT1
60,44,2.e+11,0.3
DT2
60,44,132,4,18,50,51,1
DT3
2000000. 800000. 0.3 0.5
В результате выполнения первого шага на печать выводятся матрицы связей и координат узлов конечных элементов, а также ширина ленты формируемой системы разрешающих уравнений.
80
Формирование глобальной матрицы жесткости ансамбля конечных элементов завершается выводом на печать вектора узловой нагрузки и числа уравнений, входящих в последнюю фазу.
Вычисленные на третьем шаге узловые перемещения выводятся на печать построчно: первая цифра соответствует глобальному номеру узла, далее следуют значения перемещений в порядке принятой нумерации узловых степеней свободы.
Напряжения в каждом элементе подсчитываются на последнем этапе и выводятся на печать.
ЗАКЛЮЧЕНИЕ
Впособии изложены основы применения метода конечных элементов применительно к линейно-упругим задачам. Метод конечных элементов является мощным современным средством прочностного расчета различных технических объектов машиностроения, авиационных конструкций и строительных сооружений. Метод конечных элементов полностью ориентирован на применение вычислительных машин. Однако на начальном этапе возникает необходимость составления больших массивов исходных данных, поэтому требуется максимально автоматизировать этот процесс для исключения ошибок при ручной подготовке. С этой целью в пособии представлены некоторые алгоритмы автоматизированного построения конечноэлементной сетки.
Врезультате дискретизации вопрос о построении приближенного решения в зависимости от исходной задачи сводится к решению системы линейных алгебраических уравнений, либо алгебраической задачи на собственные значения, либо задачи Коши для обыкновенных дифференциальных уравнений и т.п.
Выбор численного метода и алгоритма для решения дискретной задачи имеет свои сложности и особенности. Задача эффективного решения системы линейных алгебраических уравнений метода конечных элементов должна учитывать спе-
81
цифику глобальной матрицы жесткости исследуемой конструкции. Как известно матрицы таких систем – разреженные: ленточные, профильные или с произвольным расположением ненулевых элементов. Вид их определяется исходной задачей, выбором конечного элемента и нумерацией узлов сетки конечных элементов. Для решения таких систем уравнений используются прямые и итерационные методы. Для повышения эффективности использования алгоритмов прямых методов, экономии машинного времени и памяти широко применяются алгоритмы предварительного упорядочивания матриц системы.
Для практического осуществления расчетов необходимо располагать соответствующими программами для ЭВМ, создание которых связано со значительными затратами труда и времени. Наряду с этим разработка объектно-ориентированных программ расчета конструкций частного вида (например составных оболочек вращения, пространственных балочных конструкций) позволяет эффективно исследовать их напряженнодеформированное состояние благодаря возможности задания минимальной информации, требующейся для описания их геометрии.
Широкое применение метода конечных элементов позволит эффективно разрабатывать надежные конструкции, удовлетворяющие современным требованиям проектирования.
82
Приложение 1
dimension title (40),xp(100),yp(100),xrg(9),yrg(9),n(8) *,nn(21,21),yc(21,21),xc(21,21),nnrb(20,4,21),jt(20,4) *,lb(3),ne(500),xe(500),ye(500),nr(4),icomp(4,4),ndn(8) *,nop(500,3),cord(500,3),NOP1(496,3),CRD(290,3)
real n
data icomp /-1,1,1,-1,1,-1,-1,1,1,-1,-1,1,-1,1,1,-1/ data in/60/,io/61/,ip/62/,nbw/0/,nb/0/,nel/0/ open(11,file='DT')
open(10,file='RES') do 91 i=1,500
do 91 j=1,3 91 cord(i,j)=0.
read(11,17) title write(10,17) title
17 format(40a1) ipch=0
c
*****************************************************
c Считывание числа зон, граничных точек c
*****************************************************
read (11,1) inrg, inbp
write(10,*)' inrg=',inrg,'inbp=',inbp,'ipch=',ipch 1 format (2i3)
c
*****************************************************
c Считывание координат узлов для задания зон c
*****************************************************
|
read(11,3) (xp(i),i=1,inbp) |
|
read (11,3) (yp(i),i=1,inbp) |
3 |
format(8f10.5) |
|
do 2 i=1,inrg |
2 |
read(11,8)nrg,(jt(nrg,j),j=1,4) |
83
|
Продолжение приложения 1 |
8 |
format(5i3) |
36 |
format (1h1////1x,40a1//1x,18hglobal coordi- |
nates//1x,29hnumber x |
|
* |
coord y coord ) |
|
write(10,30) (i,xp(i),yp(i),i=1,inbp) |
30format(2x,i3,7x,f7.2,5x,f7.2)
write(10,21)
21 |
format(/1x,17hconnectivity data/1x,42hregion |
side 1 |
|
2 |
|
|
|
* |
3 |
4 ) |
|
|
do 26 i=1,inrg |
|
|
26 |
write(10,22) i,(jt(i,j),J=1,4) |
|
|
22 |
format(2x,i3,14x,4(i2,5x)) |
|
|
c |
|
|
|
*****************************************************
c Считывание исходных данных зоны c
*****************************************************
do 16 kk=1,inrg
read(11,4) nrg,nrows,ncol,ndn
4format(11i3)
write(10,18)nrg,nrows,ncol,(ndn(i),i=1,8)
18 format(1h1///1x,12h*** region ,i2,5h ****//10x,i2,5h
rows,10x,i2
1,8h columns//10x,21hboundary node numbers,10x,8i5)
*****************************************************
c generacion of the element nodal coordinates c
*****************************************************
do 5 i=1,8 ii=ndn(i) xrg(i)=xp(ii)
5yrg(i)=yp(ii)
xrg(9)=xrg(1)
84
Продолжение приложения 1
yrg(9)=yrg(1) tr=nrows -1 deta=2./tr tr=ncol-1 dsi=2./tr
do 12 i=1,nrows tr=i-1 eta=1.-tr*deta do 12 j=1,ncol tr=j-1 si=-1.+tr*dsi
n(1)=-0.25*(1.-si)*(1.-eta)*(si+eta+1.) n(2)=0.50*(1.-si**2)*(1.-eta) n(3)=0.25*(1.+si)*(1.-eta)*(si-eta-1.) n(4)=0.50*(1.+si)*(1-eta**2) n(5)=0.25*(1.+si)*(1.+eta)*(si+eta-1.) n(6)=0.50*(1.-si**2)*(1.+eta) n(7)=0.25*(1.-si)*(1.+eta)*(eta-si-1.) n(8)=0.50*(1.-si)*(1.-eta**2) xc(i,j)=0.0
yc(i,j)=0.0 do 12 k=1,8
xc(i,j)=xc(i,j)+xrg(k)*n(k) 12 yc(i,j)=yc(i,j)+yrg(k)*n(k) c
******************************************************
*****
c generation of the region node numbers c
******************************************************
*****
kn1=1
ks1=1
kn2=nrows
85
Продолжение приложения 1
ks2=ncol do 50 i=1,4 nrt=jt(nrg,i)
if (nrt.eq.0.or.nrt.gt.nrg) go to 50 do 56 j=1,4
56if (jt(nrt,j).eq.nrg)nrts=j k=ncol
if(i.eq.2.or.i.eq.4)k=nrows
jl=1
jk=icomp(i,nrts) if(jk.eq.-1) jl=k do 44 j=1,k
go to(45,46,47,48),i
45nn(nrows,j)=nnrb(nrt,nrts,jl) kn2=nrows-1
go to 44
46nn(j,ncol)=nnrb(nrt,nrts,jl) ks2=ncol-1
goto44
47nn(1,j)=nnrb(nrt,nrts,jl)
kn1=2
goto44
48nn(j,1)=nnrb(nrt,nrts,jl)
ks1=2 44 jl=jl+jk
50continue if(kn1.gt.kn2) goto105 if(ks1.gt.ks2) goto105 do 10 i=kn1,kn2
do 10 j=ks1,ks2
|
nb=nb+1 |
10 |
nn(i,j)=nb |
c |
storage of the boandary node numbers |
|
do 42 i=1,ncol |
86
Продолжение приложения 1
nnrb(nrg,1,i)=nn(nrows,i)
42nnrb(nrg,3,i)=nn(1,i) do 43 i=1,nrows nnrb(nrg,2,i)=nn(i,ncol)
43nnrb(nrg,4,i)=nn(i,1)
c output of the region node numbers write(10,49)
49format(//1x,19hregion node numbers/) do 52 i=1,nrows
52write(10,53) (nn(i,j),j=1,ncol)
53format(1x,20i5)
c division into triangular elements 105 write(10,55)
55 format(//3x,17hnel node numbers,12x,4hx(1), 8x,4hy(1),8x, *4hx(2),8x
1,4hy(2),8x,4hx(3),8x,4hy(3) ) k=1
do 54 i=1,nrows do 54 j=1,ncol xe(k)=xc(i,j) ye(k)=yc(i,j) ne(k)=nn(i,j)
54k=k+1 l=nrows-1 do 15 i=1,l
do 15 j=2,ncol diag1=sqrt((xc(i,j)-xc(i+1,j-1))**2+(yc(i,j)-yc(i+1,j-1))**2) diag2=sqrt((xc(i+1,j)-xc(i,j-1))**2+(yc(i+1,j)-yc(i,j-1))**2) nr(1)=ncol*i+j-1
nr(2)=ncol*i+j nr(3)=ncol*(i-1)+j nr(4)=ncol*(i-1)+j-1 do 15 ij=1,2 nel=nel+1
87
Продолжение приложения 1
if((diag1/diag2).gt.1.02) goto41 j1=nr(1)
j2=nr(ij+1)
j3=nr(ij+2)
goto40
41j1=nr(ij)
j2=nr(ij+1)
j3=nr(4)
40lb(1)=iabs(ne(j1)-ne(j2))+1 lb(2)=iabs(ne(j2)-ne(j3))+1 lb(3)=iabs(ne(j1)-ne(j3))+1 do 107 ik=1,3 if(lb(ik).le.nbw) goto 107 nbw=lb(ik)
nelbw=nel
107 continue write(10,301)
nel,ne(j1),ne(j2),ne(j3),xe(j1),ye(j1),xe(j2),ye(j2),xe(j3),ye(j3)
nop(nel,1)=ne(j1)
nop(nel,2)=ne(j2)
nop(nel,3)=ne(j3)
cord(ne(j1),1)=xe(j1)
cord(ne(j1),2)=ye(j1)
cord(ne(j2),1)=xe(j2)
cord(ne(j2),2)=ye(j2)
cord(ne(j3),1)=xe(j3)
cord(ne(j3),2)=ye(j3)
301format(1x,4i5,3x,6f12.4) if(ipch.eq.0) goto15
write(10,303)
nel,ne(j1),ne(j2),ne(j3),xe(j1),ye(j1),xe(j2),ye(j2),xe(j3),ye(j3) 303 format(4i3,6f10.4)
88
Продолжение приложения 1
15continue
16continue
777continue endfile(11)
close(11)
write (10,51) nbw,nelbw
51format(///1x,22h bandwidth quantity is,i4,22hcalculated in element ,i4)
write(10,*)' cord(500,3)' do 998 i=1,500
998write(10,*)' i=',i,'x=',cord(i,1),'y=',cord(i,2),'z=',cord(i,3) write(10,*)' nop(500,3)'
do 997 i=1,500
997write(10,*)' i=',i,'nop(i,1-3)=',nop(i,1),nop(i,2),nop(i,3)
DO 71 I=1,496
DO 71 J=1,3
71NOP1(I,J)=NOP(I,J) DO 72 I=1,290
DO 72 J=1,3
72CRD(I,J)=CORD(I,J)
OPEN(31,FILE='NOP',FORM='UNFORMATTED')
WRITE(31)NOP1,CRD
CLOSE(31)
endfile(10)
close(10) stop
end
89