Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
474.doc
Скачиваний:
16
Добавлен:
30.04.2022
Размер:
7.39 Mб
Скачать
    1. Описание программы расчета по методу конечных элементов

Расчет начинается с построения модели исследуемой тонкостенной конструкции. Срединная поверхность моделируемой конструкции разбивается на треугольные зоны, в углах которых помещаются узлы. При разбиении необходимо добиваться, чтобы треугольные зоны не имели острых углов при вершинах менее 20 градусов. Узлы должны размещаться также в местах приложения сосредоточенных сил и точек закрепления.

Подготовка исходных данных включает в себя построение массивов связей и координат узлов конечных элементов, на которые разбита срединная поверхность модели. Двумерный массив связей имеет число строк равное числу конечных элементов, число столбцов равно трем в соответствии с количеством узлов одного элемента. Например, четвертая строка соответствует элементу номер "четыре", в столбцах размещены глобальные номера узлов этого элемента при их нумерации против хода часовой стрелки, если смотреть со стороны нормали к срединной поверхности. Координаты узлов размещены в двумерном массиве координат, в котором номера строк соответствуют номерам узлов, а в трех столбцах помещены значения X,Y,Z соответствующего узла в глобальной системе отсчета. Кроме массива связей и координат узлов конечных элементов необходимо ввести граничные условия, которые задаются в виде двух одномерных массивов: массива номеров узлов, которые закреплены и массива, идентифицирующего характер закрепления в соответствии с числом степеней свободы узла. При формировании вектора узловой нагрузки моделируемой конструкции вводятся номера узлов, которые нагружены и значения составляющих сил и моментов вдоль осей глобальной системы отсчета. Все эти исходные данные помещены в файле "DATE" и считываются по мере необходимости на соответствующих этапах.

По этим данным формируются массивы связей и координат конечных элементов, вектор узловой нагрузки, массив граничных узлов программой DTMKE.f.

Программа написана на языке Fortran 77 и весь процесс расчета разбит на четыре этапа.

Первым шагом расчета является вычисление матриц жесткости конечных элементов и запись их в файл "ESTIFM". Матрицы жесткости вычисляются в локальной системе, связанной с конкретным конечным элементом и преобразуются в глобальную систему отсчета при помощи подпрограммы STI3. Здесь же подсчитывается ширина ленты формируемой на следующем шаге глобальной матрицы жесткости модели при помощи подпрограммы NBAND.

На следующем шаге происходит формирование матрицы жесткости ансамбля конечных элементов моделируемой конструкции вызовом подпрограммы FORM, с учетом заданных граничных условий. Сформированная матрица жесткости записывается в файл "AGLOB". В файл "NPR" записывается профиль глобальной матрицы жесткости, глобальный вектор узловой нагрузки и число уравнений, входящих в последнюю фазу (для обеспечения возможности решения систем линейных уравнений большой размерности производится пофазное формирование).

На третьем шаге происходит разложение и решение полученной системы уравнений по методу Холецкого при помощи подпрограмм RASL и RES.

Последним этапом расчета является вычисление напряжений в конечных элементах по вектору узловых перемещений, полученному на предыдущем шаге (подпрограммы TRANSC, BST, SHELLT).

Ниже представлен текст программы написанной на языке FORTRAN.

ТЕКСТ ПРОГРАММЫ ФОРМИРОВАНИЯ МАССИВОВ ДАННЫХ dtmke.f

parameter(ne=6,ncn=3,np=8,nb=3,nszf=48,nq=2)

dimension nop(ne,ncn),cord(np,3),nbc(nb),nfix(nb),rq(nszf)

open(1,file='rs',form='unformatted')

open(3,file='nop',form='unformatted')

open(5,file='date1',form='unformatted')

do 1 i=1,np

do 1 j=1,3

1 cord(i,j)=0.

do 2 i=1,np

2 read(5,*)i,(cord(i,j),j=1,3)

do 3 i=1,ne

3 read(5,*)i,(nop(i,j),j=1,3)

do 4 i=1,nb

4 read(5,*)nbc(i),nfix(i)

do 5 i=1,nszf

5 rq(i)=0.

do 6 i=1,nq

6 read(5,*)nu,rq(nu)

read(5,*)em,pr,thin

write(3)nop,cord,nbc,nfix,rq,em,pr,thin

end file(3)

close(3)

write(1,*)' em=',em,' pr=',pr,' thin=',thin

write(1,*)' Координаты узлов'

do 7 i=1,np

7 write(1,*)(cord(i,j),j=1,3)

write(1,*)' Матрица связей'

do 8 i=1,ne

8 write(1,*)(nop(i,j),j=1,3)

write(1,*)'Граничные условия'

do 9 i=1,nb

9 write(1,*)nbc(i),nfix(i)

write(1,*)'Вектор узловой нагрузки'

do 10 i=1,nszf

10 write(1,*)' i=',i,rq(i)

close(5)

close(1)

stop

end

ТЕКСТ ПРОГРАММЫ ПЕРВОГО ЭТАПА s_mke1.f

parameter(nstm=18,np=8,ne=6,ncn=3,nszf=48,

* ndf=3,nb=3)

* вычисление и запись локальных матриц жесткости

* треугольных пластинчатых элементов

* массивы nop и cord сформированы ранее и считываются из файла 10

dimension cord(np,3),nop(ne,ncn),estifm(nstm,nstm),

* rtb(nstm,nstm),nbc(nb),nfix(nb),rq(nszf)

open(1,file='RES1')

open(8,FILE='ESTIFM',form='unformatted')

open(10,file='NOP',form='unformatted')

read(10)nop,cord,nbc,nfix,rq,em,pr,thin

close(10)

write(1,*)' nop'

do 999 i=1,ne

999 write(1,*)i,(nop(i,j),j=1,ncn)

write(1,*)' cord'

do 998 i=1,np

998 write(1,*)i,(cord(i,j),j=1,3)

ndf1=6

call NBND(nop,ne,nband,ndf1,ncn)

write(1,*)' nband=',nband

do 2 nj=1,ne

print *' element',nj

print *

call sti3(nj,NOP,NE,NCN,THIN,Em,PR,np,cord,estifm,

* y12,y23,y31,x21,x32,x13,rtb,str)

WRITE(8) ((ESTIFM(I2,J2),I2=1,18),J2=1,18)

2 continue

end file(1)

close(1)

close(8)

stop

end

ТЕКСТ ПРОГРАММЫ ВТОРОГО ЭТАПА s_mke2.f

parameter(ne=6,np=8,nszf=48,nb=3,nband=24,

* imax=15,imx1=16,nstm=18,ncn=3,nt=1,ndfg=6,ncnm=3)

* формирование глобальной матрицы жесткости конструкции

dimension cord(np,3),nop(ne,ncn),

* estifm(nstm,nstm),rtb(nstm,nstm)

* ,rq(nszf),nbc(nb),nfix(nb),ndft(nt),net(nt)

* ,ncnt(nt),y(imx1),s(nszf),a(imax,nband)

* ,npr(nszf),npr1(nszf)

open(16,file='RES2')

open(7,file='NPR',form='unformatted')

open(29,file='NOP',form='unformatted')

READ(29)NOP,CORD,nbc,nfix,rq

close(29)

do 33 i=1,nb

33 write(16,*)'nbc',nbc(i),'nfix',nfix(i)

do 44 i=1,nszf

44 write(16,*)'i=',i,'rq',rq(i)

net(1)=ne

ndft(1)=6

ncnt(1)=3

WRITE(16,8)(NET(I),NDFT(I),NCNT(I),I=1,NT)

8 FORMAT(12I5)

WRITE(16,9)(NBC(I),NFIX(I),I=1,NB)

9 FORMAT(2i8)

call FORM(imax,npr,nband,nszf,ne,ndfg,ncnm,nt,

*net,ndft,ncnt,nop,estifm,nstm,rq,a,nb,nfix,nbc,ik)

write(7)ik,rq,npr

end file(7)

close(7)

end file(16)

close(16)

stop

end

ТЕКСТ ПРОГРАММЫ ТРЕТЬЕГО ЭТАПА s_mke3.f

parameter(np=8,ne=6,ncn=3,nszf=48,nb=3,nband=24,imax=15,

* imx1=16,ndfg=6,ncnm=3,nt=1)

* разложение и решение системы линейных уравнений

dimension nop(ne,ncn),rq(nszf),y(imx1),s(nszf),

*a(imax,nband),npr(nszf),npr1(nszf)

open(1,file='AGLOB',form='unformatted')

open(2,file='F2RES',form='unformatted')

open(16,file='RES3')

open(7,file='NPRof',form='unformatted')

read(7)ik,rq,npr

close(7)

ij=nszf/imax

if(ik.ne.imax) ij=ij+1

call RASL(npr,imax,nband,ij,ik,nszf,imx1,y,s,npr1,rq,a)

call RES(nband,imax,ik,a,rq,nszf)

do 7 i=1,np

7 write(16,4)i,(rq((i-1)*ndfg+j),j=1,ndfg)

4 format(i5,6e10.2)

open(3,file='DIS',form='unformatted')

write(3)rq

end file(3)

close(3)

close(2,status='delete')

close(1)

end file(16)

close(16)

stop

end

ТЕКСТ ПРОГРАММЫ ЧЕТВЕРТОГО ЭТАПА s_mke4.f

parameter(np=8,ne=6,nszf=48,em=2.0e06,pr=0.3,

* thin=0.25,ndfg=6,ncnm=3,

* nst9=9,ndf=6,nst=6,nstm=18,ncn=3)

* вычисление напряжений в элементах

dimension nop(ne,ncn),rq(nszf),cord(np,ncn),

* ttl(nst9,nst9),xl(nst9),bt(3,9),bp(3,6),stresn(6),

* force(ne,14)

open(16,file='RES4')

open(9,file='NOP',form='unformatted')

read(9)nop,cord

close(9)

write(16,8)ne,np,ndf,ncn,nst,nszf,em,pr

8 format(' NE=',I4,' NP=',I4,' NDF=',I2,' NCN=',I2,' NST=',I2,

*' NSZF=',I5,' EM=',F8.0,' PR=',F5.2)

open(3,file='DIS',form='unformatted')

read(3) rq

close(3)

write(16,*)' УЗЛОВЫЕ ПЕРЕМЕЩЕНИЯ'

write(16,*)' Узел X Y Z ',

*' rot->x rot->y rot->z '

do 7 i=1,np

7 write(16,4)i,(rq((i-1)*ndfg+j),j=1,ndfg)

4 format(i5,6e10.2)

DO 3 N=1,NE

CALL TRANSC(TTL,XL,STR,STINV,WSINV,CORD,NP,NOP,NE,NCN,N)

CALL BST(XL,STINV,WSINV,BT,BP)

CALL SHELLT(N,NE,NP,NCN,NDF,NOP,RQ,PR,STRESN,EM,THIN,BT,BP,TTL,

*force)

3 CONTINUE

end file(16)

close(16)

stop

end

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]