10.  Сивцова Е.П. Расчёт осадки одиночной сваи с учётом работы острия. - Сб. трудов НИИ оснований №53, М., 1963.

11.  Цытович H.А. Механика грунтов. - Москва: Госстройиздат, 1963. - 636 с.

Приложение

 

(основные функции, процедуры и алгоритмы приложения)

функции подсчета коэффициентов b, c, d используемых для формирования матрицы жесткости function det (a11,a12,a13,a21,a22,a23,a31,a32,a33: integer): real;

begin

det: =a11*a22*a33-a11*a23*a32+a12*a23*a31-

a12*a21*a33+a13*a21*a32-a13*a22*a31;

end;

function formb (a,ntetr: integer): real;

begin

if a=cells [ntetr,1] then formb: =-det (1,kordy [ntetr,2],kordz [ntetr,2],1,kordy [ntetr,3],kordz [ntetr,3],1,kordy [ntetr,4],kordz [ntetr,4]);

if a=cells [ntetr,2] then formb: =det (1,kordy [ntetr,3],kordz [ntetr,3],1,kordy [ntetr,4],kordz [ntetr,4],1,kordy [ntetr,1],kordz [ntetr,1]);

if a=cells [ntetr,3] then formb: =-det (1,kordy [ntetr,4],kordz [ntetr,4],1,kordy [ntetr,1],kordz [ntetr,1],1,kordy [ntetr,2],kordz [ntetr,2]);

if a=cells [ntetr,4] then formb: =det (1,kordy [ntetr,1],kordz [ntetr,1],1,kordy [ntetr,2],kordz [ntetr,2],1,kordy [ntetr,3],kordz [ntetr,3]);

end;

function formc (a,ntetr: integer): real;

begin

if a=cells [ntetr,1] then formc: =det (1,kordx [ntetr,2],kordz [ntetr,2],1,kordx [ntetr,3],kordz [ntetr,3],1,kordx [ntetr,4],kordz [ntetr,4]);

if a=cells [ntetr,2] then formc: =-det (1,kordx [ntetr,3],kordz [ntetr,3],1,kordx [ntetr,4],kordz [ntetr,4],1,kordx [ntetr,1],kordz [ntetr,1]);

if a=cells [ntetr,3] then formc: =det (1,kordx [ntetr,4],kordz [ntetr,4],1,kordx [ntetr,1],kordz [ntetr,1],1,kordx [ntetr,2],kordz [ntetr,2]);

if a=cells [ntetr,4] then formc: =-det (1,kordx [ntetr,1],kordz [ntetr,1],1,kordx [ntetr,2],kordz [ntetr,2],1,kordx [ntetr,3],kordz [ntetr,3]);

end;

function formd (a,ntetr: integer): real;

begin

if a=cells [ntetr,1] then formd: =-det (1,kordx [ntetr,2],kordy [ntetr,2],1,kordx [ntetr,3],kordy [ntetr,3],1,kordx [ntetr,4],kordy [ntetr,4]);

if a=cells [ntetr,2] then formd: =det (1,kordx [ntetr,3],kordy [ntetr,3],1,kordx [ntetr,4],kordy [ntetr,4],1,kordx [ntetr,1],kordy [ntetr,1]);

if a=cells [ntetr,3] then formd: =-det (1,kordx [ntetr,4],kordy [ntetr,4],1,kordx [ntetr,1],kordy [ntetr,1],1,kordx [ntetr,2],kordy [ntetr,2]);

if a=cells [ntetr,4] then formd: =det (1,kordx [ntetr,1],kordy [ntetr,1],1,kordx [ntetr,2],kordy [ntetr,2],1,kordx [ntetr,3],kordy [ntetr,3]);

end;

процедура формирования матрицы жесткости

procedure formprmatr (a,b,k: integer);

var ro,G,lya,Mu,E,vv: extended;

begin

Mu: =0.2; E: =360;

G: =E/ (2* (1+Mu));

lya: = (2*Mu*G) / (1-2*Mu);

ro: =2*G+lya;

vv: =1/ (360*V [ (k div 7) +1]);

prmatr [3*a-2,3*b-3*a+1]: =prmatr [3*a-2,3*b-3*a+1] +vv* (formb (a,k) *formb (b,k) *ro+G* (formc (a,k) *formc (b,k) +formd (a,k) *formd (b,k)));

prmatr [3*a-2,3*b-3*a+2]: =prmatr [3*a-2,3*b-3*a+2] +vv* (formb (a,k) *formc (b,k) *lya+formc (a,k) *formb (b,k) *G);

prmatr [3*a-2,3*b-3*a+3]: =prmatr [3*a-2,3*b-3*a+3] +vv* (formb (a,k) *formd (b,k) *lya+formd (a,k) *formb (b,k) *G);

if (3*a-1<=3*b-2) then prmatr [3*a-1,3*b-3*a]: =prmatr [3*a-1,3*b-3*a] +vv* (formc (a,k) *formb (b,k) *lya+formb (a,k) *formc (b,k) *G);

prmatr [3*a-1,3*b-3*a+1]: =prmatr [3*a-1,3*b-3*a+1] +vv* (formc (a,k) *formc (b,k) *ro+G* (formb (a,k) *formb (b,k) +formd (a,k) *formd (b,k)));

prmatr [3*a-1,3*b-3*a+2]: =prmatr [3*a-1,3*b-3*a+2] +vv* (formc (a,k) *formd (b,k) *lya+formd (a,k) *formc (b,k) *G);

if (3*a<=3*b-2) then prmatr [3*a,3*b-3*a-1]: =prmatr [3*a,3*b-3*a-1] +vv* (formd (a,k) *formb (b,k) *lya+formb (a,k) *formd (b,k) *G);

if (3*a<=3*b-1) then prmatr [3*a,3*b-3*a]: =prmatr [3*a,3*b-3*a] +vv* (formd (a,k) *formc (b,k) *lya+formc (a,k) *formd (b,k) *G);

prmatr [3*a,3*b-3*a+1]: =prmatr [3*a,3*b-3*a+1] +vv* (formd (a,k) *formd (b,k) *ro+G* (formc (a,k) *formc (b,k) +formb (a,k) *formb (b,k)));

end;

функция для получения необходимого элемента в прямоугольной матрице

function value (i: integer; j: integer): real;

begin

if (j<=i-m) or (j>=i+m) then value: =0;

if (i>j) then value: =prmatr [j, i-j+1] ;

if (i<=j) then value: =prmatr [i,j-i+1] ;

end;

функция для получения элементов прямоугольной матрицы с учетом ее сжатия

function value2 (i,j: integer): real;

var k,n1: integer;

begin

n1: =kx*ky*kz*3;

for k: =1 to n1 do

begin

if (P [k] =1) and (i>=k) then inc (i);

if (P [k] =1) and (j>=k) then inc (j);

end;

value2: =value (i,j);

end;

процедура сжатия силового вектора

procedure compressf (k: integer);

var i: integer;

begin

for i: =k to 3*kx*ky*kz do F [i]: =F [i+1] ;

inc (Count);

end;

функция, возвращающая значение сигнума от числа

function sign (f: real): shortint;

begin

if f=0 then sign: =0

else sign: =round (abs (f) /f);

end;

алгоритм занесения координат и номеров узлов тетраздров

point: =1;

kp: =ky*kz;

ntetr: =1;

x: =0;

for i: =1 to kx-1 do

begin

y: =0;

for j: =1 to ky-1 do

begin

z: =0;

for k: =1 to kz-1 do

begin

k1: =point+kp;

k2: =point+kz+1;

z: =z+hz [k] ;

cells [ntetr,1]: =k2; kordx [ntetr,1]: =x; kordy [ntetr,1]: =y+hy [j] ; kordz [ntetr,1]: =z;

cells [ntetr,2]: =point; kordx [ntetr,2]: =x; kordy [ntetr,2]: =y; kordz [ntetr,2]: =z-hz [k] ;

cells [ntetr,3]: =point+1; kordx [ntetr,3]: =x; kordy [ntetr,3]: =y; kordz [ntetr,3]: =z;

cells [ntetr,4]: =k1; kordx [ntetr,4]: =x+hx [i] ; kordy [ntetr,4]: =y; kordz [ntetr,4]: =z-hz [k] ;

cells [ntetr+1,1]: =k2; kordx [ntetr+1,1]: =x; kordy [ntetr+1,1]: =y+hy [j] ; kordz [ntetr+1,1]: =z;

cells [ntetr+1,2]: =point+1; kordx [ntetr+1,2]: =x; kordy [ntetr+1,2]: =y; kordz [ntetr+1,2]: =z;

cells [ntetr+1,3]: =k1+1; kordx [ntetr+1,3]: =x+hx [i] ; kordy [ntetr+1,3]: =y; kordz [ntetr+1,3]: =z;

cells [ntetr+1,4]: =k1; kordx [ntetr+1,4]: =x+hx [i] ; kordy [ntetr+1,4]: =y; kordz [ntetr+1,4]: =z-hz [k] ;

cells [ntetr+2,1]: =k2; kordx [ntetr+2,1]: =x; kordy [ntetr+2,1]: =y+hy [j] ; kordz [ntetr+2,1]: =z;

cells [ntetr+2,2]: =k1+1; kordx [ntetr+2,2]: =x+hx [i] ; kordy [ntetr+2,2]: =y; kordz [ntetr+2,2]: =z;

cells [ntetr+2,3]: =k1+kz+1; kordx [ntetr+2,3]: =x+hx [i] ; kordy [ntetr+2,3]: =y+hy [j] ; kordz [ntetr+2,3]: =z;

cells [ntetr+2,4]: =k1; kordx [ntetr+2,4]: =x+hx [i] ; kordy [ntetr+2,4]: =y; kordz [ntetr+2,4]: =z-hz [k] ;

cells [ntetr+3,1]: =k2; kordx [ntetr+3,1]: =x; kordy [ntetr+3,1]: =y+hy [j] ; kordz [ntetr+3,1]: =z;

cells [ntetr+3,2]: =k1+kz+1; kordx [ntetr+3,2]: =x+hx [i] ; kordy [ntetr+3,2]: =y+hy [j] ; kordz [ntetr+3,2]: =z;

cells [ntetr+3,3]: =k1+kz; kordx [ntetr+3,3]: =x+hx [i] ; kordy [ntetr+3,3]: =y+hy [j] ; kordz [ntetr+3,3]: =z-hz [k] ;

cells [ntetr+3,4]: =k1; kordx [ntetr+3,4]: =x+hx [i] ; kordy [ntetr+3,4]: =y; kordz [ntetr+3,4]: =z-hz [k] ;

cells [ntetr+4,1]: =k2; kordx [ntetr+4,1]: =x; kordy [ntetr+4,1]: =y+hy [j] ; kordz [ntetr+4,1]: =z;

cells [ntetr+4,2]: =k1+kz; kordx [ntetr+4,2]: =x+hx [i] ; kordy [ntetr+4,2]: =y+hy [j] ; kordz [ntetr+4,2]: =z-hz [k] ;

cells [ntetr+4,3]: =point+kz; kordx [ntetr+4,3]: =x; kordy [ntetr+4,3]: =y+hy [j] ; kordz [ntetr+4,3]: =z-hz [k] ;

cells [ntetr+4,4]: =k1; kordx [ntetr+4,4]: =x+hx [i] ; kordy [ntetr+4,4]: =y; kordz [ntetr+4,4]: =z-hz [k] ;

cells [ntetr+5,1]: =k2; kordx [ntetr+5,1]: =x; kordy [ntetr+5,1]: =y+hy [j] ; kordz [ntetr+5,1]: =z;

cells [ntetr+5,2]: =point+kz; kordx [ntetr+5,2]: =x; kordy [ntetr+5,2]: =y+hy [j] ; kordz [ntetr+5,2]: =z-hz [k] ;

cells [ntetr+5,3]: =point; kordx [ntetr+5,3]: =x; kordy [ntetr+5,3]: =y; kordz [ntetr+5,3]: =z-hz [k] ;

cells [ntetr+5,4]: =k1; kordx [ntetr+5,4]: =x+hx [i] ; kordy [ntetr+5,4]: =y; kordz [ntetr+5,4]: =z-hz [k] ;

V [k+ (j-1) * (kz-1) + (i-1) * (kz-1) * (ky-1)]: = (hz [k] *hy [j] *hx [i]) /6;

inc (point);

inc (ntetr,6);

end;

inc (point);

y: =y+hy [j] ;

end;

inc (point,kz);

x: =x+hx [i] ;

end;

алгоритм построения матрицы жесткости и ее компрессии

begin

n: =kx*ky*kz*3;

m: = (ky*kz+1) *3;

for k: =1 to koltetr do

for i: =1 to 4 do

for j: =1 to 4 do

if (cells [k, i] <=cells [k,j]) then formprmatr (cells [k, i],cells [k,j],k);

Count: =0;

for i: =1 to 3*kx*ky*kz do if P [i] =1 then compressf (i-Count);

dec (n,count);

end;

алгоритм решения системы уравнений

begin

s [1,1]: =sqrt (abs (value2 (1,1))); d [1]: =sign (value2 (1,1));

for j: =2 to n do s [1,j]: =value2 (1,j) / (d [1] *s [1,1]);

for i: =2 to n do

begin

for j: =2 to n do

begin

if i>j then s [i,j]: =0;

sum: =0;

for k: =1 to i-1 do sum: =sum+s [k, i] *s [k, i] *d [k] ;

d [i]: =sign (value2 (i, i) - sum);

if i<j then

begin

sum: =0;

for k: =1 to i-1 do sum: =sum+s [k, i] *s [k,j] *d [k] ;

s [i,j]: = (value2 (i,j) - sum) / (s [i, i] *d [i]);

end;

sum: =0;

for k: =1 to j-1 do sum: =sum+d [k] *s [k,j] *s [k,j] ;

s [j,j]: =sqrt (abs (value2 (j,j) - sum));

end;

end;

y [1]: =F [1] / (s [1,1] *d [1]);

for k: =2 to n do

begin

sum: =0;

for i: =1 to k-1 do sum: =sum+s [i,k] *y [i] *d [i] ;

y [k]: = (F [k] -sum) / (s [k,k] *d [k]);

end;

x [n]: =y [n] /s [n,n] ;

for k: =n-1 downto 1 do

begin

sum: =0;

for i: =k+1 to n do sum: =sum+s [k, i] *x [i] ;

x [k]: = (y [k] -sum) /s [k,k] ;

end;

end;

 


Информация о работе «Суперэлементное моделирование пространственной системы "плита – грунтовое основание"»
Раздел: Информатика, программирование
Количество знаков с пробелами: 36768
Количество таблиц: 0
Количество изображений: 10

0 комментариев


Наверх