на тему рефераты Информационно-образоательный портал
Рефераты, курсовые, дипломы, научные работы,
на тему рефераты
на тему рефераты
МЕНЮ|
на тему рефераты
поиск
Выбор материала и расчет параметров обделок вертикальных стволов метрополитенов

[pic];

где [pic] - коэффициент формы упругой линии кольца обделки при потере

устойчивости; расчетное критическое давление [pic] находится как наименьшее

значение функции [pic].

4. Приложения

1. Программа для проверки несущей способности и построения паспорта

прочности тюбинговых обделок вертикальных стволов метрополитенов.

unit Calc1;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,

Forms, Dialogs, DBTables, DB, DBFilter, Grids, DBGrids, StdCtrls,

RXLookup, ExtCtrls, Buttons;

type

TForm1 = class(TForm)

Panel1: TPanel;

Panel2: TPanel;

rxDBLookupCombo1: TrxDBLookupCombo;

Edit1: TEdit;

Label1: TLabel;

Label2: TLabel;

Edit2: TEdit;

Label3: TLabel;

DBGrid1: TDBGrid;

Label4: TLabel;

TableSTUFF: TTable;

DataSourceSTUFF: TDataSource;

rxDBFilter1: TrxDBFilter;

DataSourceDATA: TDataSource;

TableDATA: TTable;

TableDATAR: TFloatField;

TableDATAMass: TFloatField;

TableDATAR_press: TFloatField;

TableDATAR_stretch: TFloatField;

TableDATAPuasson: TFloatField;

TableDATAR1: TFloatField;

TableDATARb: TFloatField;

TableDATAA: TFloatField;

TableDATAB: TFloatField;

TableDATAStuff: TSmallintField;

BitBtn1: TBitBtn;

RadioGroup1: TRadioGroup;

RadioButton1: TRadioButton;

RadioButton2: TRadioButton;

RadioButton3: TRadioButton;

procedure rxDBLookupCombo1Change(Sender: TObject);

procedure DBGrid1DblClick(Sender: TObject);

procedure RadioButton1Click(Sender: TObject);

procedure RadioButton2Click(Sender: TObject);

procedure RadioButton3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

uses

Draw;

{$R *.DFM}

procedure TForm1.rxDBLookupCombo1Change(Sender: TObject);

var

S: String;

begin

rxDBFilter1.Deactivate;

rxDBFilter1.Filter.Clear;

s:='Stuff = '+TableSTUFF.FieldByName('Code').AsString;

rxDBFilter1.Filter.Add(S);

rxDBFilter1.Activate;

end;

procedure TForm1.DBGrid1DblClick(Sender: TObject);

var

Mass, R_press, R_stretch, Puasson, PuassonP, R1, Rb, R, A, B: Double;

P0, P2: Double;

C1, C2: Double;

K0, K1, K2, K3, K4: Double;

L, L1: Double;

ALFA1, ALFA2: Double;

BETA, BETA1, BETA2: Double;

DELTA1, DELTA2: Double;

GAMMA1, GAMMA2: Double;

D1, D2: Double;

F: Double;

SIGMARS, SIGMARR, SIGMASS, SIGMASR: Double;

i: Integer;

Pkr, PkrOld: Double;

Eo, Ep, J: Double;

procedure Calc;

begin

C1 := R1/Rb;

C2 := R/R1;

F := (C2*C2-1)/(C1*C1-1)*(C2*C2-1)/(C1*C1-1)*

(C2*C2-1)/(C1*C1-1)*(1+B/A);

D2 := (C2*C2+1)*(C2*C2+1)*(C2*C2+1)/(Puasson+1);

D1 := (C1*C1-1)*(C1*C1-1)/(Puasson+1);

DELTA2 := C2*C2*(C2*C2+1);

DELTA1 := C2*C2*(3-C2*C2);

GAMMA2 := C2*C2*(2*C2*C2*C2*C2+C2*C2+1);

GAMMA1 := C2*C2*(3+C2*C2);

BETA := (3+R/Rb*R/Rb)/(3-R/Rb*R/Rb);

BETA2 := C2*C2*C2*C2*(C2*C2+1)-D2+F*(C1*C1+1+D1);

BETA1 := 3*C2*C2-1-D2+F*((3-C2*C2)*C1*C1*C1*C1+D1);

ALFA2 := C2*C2*(2+C2*C2+C2*C2*C2*C2)-

D2+F*(2*C1*C1*C1*C1+C1*C1+1+D1);

ALFA1 := 3*C2*C2+1+D2+F*((C1*C1+3)*C1*C1*C1*C1-D1);

K4 := (ALFA2*DELTA1-ALFA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

K3 := (ALFA1*GAMMA2-ALFA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

K2 := (BETA2*DELTA1-BETA1*DELTA2)/(ALFA2*BETA1-ALFA1*BETA2);

K1 := (BETA1*GAMMA2-BETA2*GAMMA1)/(ALFA2*BETA1-ALFA1*BETA2);

L1 := 4*C2*C2*(C2*C2+1-BETA)-(K1+BETA*K2)*((C1*C1+1)*(C1*C1+1)

+4*C2*C2)+2*(K3+BETA*K4)*((C2*C2+1)*(C2*C2+1)-2);

L := (K1+BETA*K2)*(C1*C1+1)-(K3+BETA*K4);

K0 := 3*C2*C2/((1+B/A)*(C2*C2-1)/(C1*C1-1)*(2+C1*C1)+2*C2*C2+1);

end;

begin

with TableDATA do begin

Mass := FieldByName('Mass').AsFloat;

R_press := FieldByName('R_press').AsFloat;

R_stretch := FieldByName('R_stretch').AsFloat;

Puasson := FieldByName('Puasson').AsFloat;

R1 := FieldByName('R1').AsFloat;

Rb := FieldByName('Rb').AsFloat;

R := FieldByName('R').AsFloat;

A := FieldByName('A').AsFloat;

B := FieldByName('B').AsFloat;

end;

if RadioButton1.Checked then begin

Calc;

if TableDATA.FieldByName('Stuff').AsInteger = 0 {Железо-бетон} then

begin

PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*C1*K0*(1+B/A);

PLines[isP2,1] := (C1*C1-1)*(C1*C1-1)*

Mass*R_press/4*C1*C1*K0*(1+B/A);

PLines[isP0,2] := -(C1*C1-1)*Mass*R_stretch/2*C1*C1*K0*(1+B/A);

PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

Mass*R_stretch/4*C1*C1*K0*(1+B/A);

PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

PLines[isP0,5] := -(C2*C2-1)*

Mass*R_stretch/(2*C2*C2-K0*(C2*C2+1));

PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

end

else begin {Чугун}

PLines[isP0,1] := (C1*C1-1)*Mass*R_press/2*C1*K0*(1+B/A);

PLines[isP2,1] := (C2*C2-1)*(C2*C2-1)*

Mass*R_press/4*C1*C1*K0*(1+B/A);

PLines[isP0,2] := -(C2*C2-1)*Mass*R_stretch/2*C1*K0*(1+B/A);

PLines[isP2,2] := (C1*C1-1)*(C1*C1-1)*

Mass*R_stretch/4*C1*C1*K0*(1+B/A);

PLines[isP0,4] := (C2*C2-1)*Mass*R_press/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,4] := (C2*C2-1)*(C2*C2-1)*Mass*R_press/L1;

PLines[isP0,5] := -(C2*C2-1)*Mass*R_stretch/(2*C2*C2-K0*

(C2*C2+1));

PLines[isP2,5] := (C2*C2-1)*(C2*C2-1)*Mass*R_stretch/L1;

end;

DrawForm.ShowModal;

end

else if RadioButton2.Checked then begin

Calc;

P0 := StrToFloat(Edit1.Text);

P2 := StrToFloat(Edit2.Text);

SIGMARS := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0+2*P2*L/

(C1*C1-1)));

SIGMARR := ABS(2*C1*C1/(C1*C1-1)*(1+B/A)*(P0*K0-2*P2*L/

(C1*C1-1)));

SIGMASS := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))+P2*L1/

(C2*C2-1)*(C2*C2-1));

SIGMASR := ABS(P0/(C2*C2-1)*(2*C2*C2-K0*(C2*C2+1))-P2*L1/

(C2*C2-1)*(C2*C2-1));

if (SIGMARS>Mass*R_press) or (SIGMARR>Mass*R_stretch) or

(SIGMASS>Mass*R_press) or (SIGMASR>Mass*R_stretch)

then

MessageDlg('Несущая способность не

обеспечена',mtInformation,[mbOk],0)

else

MessageDlg('Несущая способность

обеспечена',mtInformation,[mbOk],0);

end

else begin

i:=1;

PkrOld :=0;

repeat

i := i+1;

Pkr := (i*i-1)*Eo*J/((1-Puasson)*(1-Puasson)*R*R*R)+Ep/(2*

(1+PuassonP))*((i+1)*(i+1)/(i*i*(i-1))+(i-1)*

(i-1)/(i*i*(i+1)*(3-4*PuassonP)));

if Pkr < PkrOld then PkrOld := Pkr else i:=0;

until i = 0;

P0 := StrToFloat(Edit1.Text);

if P0<=Pkr then

MessageDlg('Устойчивость обеспечена',mtInformation,[mbOk],0)

else

MessageDlg('Устойчивость не

обеспечена',mtInformation,[mbOk],0);

end;

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Label2.Visible := False;

Label3.Visible := False;

Edit1.Visible := False;

Edit2.Visible := False;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

Label2.Visible := True;

Label3.Visible := True;

Edit1.Visible := True;

Edit2.Visible := True;

end;

procedure TForm1.RadioButton3Click(Sender: TObject);

begin

Label2.Visible := True;

Label3.Visible := False;

Edit1.Visible := True;

Edit2.Visible := False;

end;

end.

unit Draw;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Controls, Forms, Dialogs, StdCtrls, Buttons, ExtCtrls;

type

TDrawForm = class(TForm)

BitBtn1: TBitBtn;

procedure FormActivate(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

TPaintData = (isP0,isP2);

TDiagramArray = Array[TPaintData,1..5] of Double;

var

PLines : TDiagramArray;

DrawForm: TDrawForm;

implementation

{$R *.DFM}

procedure TDrawForm.FormActivate(Sender: TObject);

var

R: TRect;

MaxX, MinX: Double;

MaxY, MinY: Double;

Nx, Ny: Integer;

Kx, Ky: Double;

i: Byte;

PointMin, PointMax: Double;

procedure DrawLine(X0, k, b:Double);

begin

Canvas.MoveTo(R.Left+60+Round(Kx*X0),R.Bottom-30);

if k<0 then

Canvas.LineTo(R.Left+60,Round(R.Bottom - 33 -

(Ky*(b+(k*(10)/Kx)))))

else

Canvas.LineTo(R.Right-10,Round(R.Bottom - 33 -

(Ky*(-b+(k*((R.Right-R.Left-70)/Kx))))));

end;

begin

PLines[isP0,3] := 0;

PLines[isP2,3] := 0;

MaxX := 0.0;

MinX := 0.0;

MaxY := 0.0;

MinY := 0.0;

for i := 1 to 5 do begin

if PLines[isP0,i] > MaxX then MaxX := PLines[isP0,i];

if PLines[isP2,i] > MaxY then MaxY := PLines[isP2,i];

if PLines[isP0,i] < MinX then MinX := PLines[isP0,i];

if PLines[isP2,i] < MinY then MinY := PLines[isP2,i];

end;

if MaxX > 200 then Nx := 100 else Nx := 10;

MaxX := Round(MaxX/Nx)*Nx+Nx;

if MaxY > 200 then Ny := 100 else Ny := 10;

MaxY := Round(MaxY/Ny)*Ny+Ny;

with DrawForm do begin

Canvas.Pen.Color := clBlack;

R.Left := 10;

R.Top := 10;

R.Right := Width - 15;

R.Bottom := Height - 70;

Canvas.FrameRect(R);

Canvas.Brush.Color := clBtnFace;

Kx := (R.Right - R.Left - 80)/MaxX;

Ky := (R.Bottom - R.Top - 80)/MaxY;

{Ось Po}

Canvas.MoveTo(R.Left+10,R.Bottom-30);

Canvas.LineTo(R.Right-10,R.Bottom-30);

{Ось P2}

Canvas.MoveTo(R.Left+60,R.Top+30);

Canvas.LineTo(R.Left+60,R.Bottom-30);

i := 0;

while i*Nx<MaxX do begin

Inc(i);

Canvas.MoveTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-33);

Canvas.LineTo(R.Left+60+Round(Kx*i*Nx),R.Bottom-27);

Canvas.TextOut(R.Left+50+Round(Kx*i*Nx), R.Bottom-20,

IntToStr(i*Nx));

end;

i := 0;

while i*Ny<MaxY do begin

Inc(i);

Canvas.MoveTo(R.Left+63,R.Bottom-30-Round(Ky*i*Ny));

Canvas.LineTo(R.Left+57,R.Bottom-30-Round(Ky*i*Ny));

Canvas.TextOut(R.Left+30, R.Bottom-35-Round(Ky*i*Ny),

IntToStr(i*Ny));

end;

if PLines[isP0,1] > PLines[isP0,4] then

PointMax := PLines[isP0,4]

else PointMax := PLines[isP0,1];

if PLines[isP0,2] > PLines[isP0,5] then

PointMin := PLines[isP0,2]

else PointMin := PLines[isP0,5];

if PointMin < 0 then PointMin := 0.0;

DrawLine(PLines[isP0,1],

-(PLines[isP2,1]/PLines[isP0,1]),PLines[isP2,1]);

DrawLine(PLines[isP0,2],

-(PLines[isP2,2]/PLines[isP0,2]),PLines[isP2,2]);

DrawLine(0,1,0);

DrawLine(PLines[isP0,4],

-(PLines[isP2,4]/PLines[isP0,4]),PLines[isP2,4]);

DrawLine(PLines[isP0,5],

-(PLines[isP2,5]/PLines[isP0,5]),PLines[isP2,5]);

Canvas.Brush.Color := clGreen;

Canvas.FloodFill(Round((((PointMax-PointMin)/2)*Kx)+R.Left+60),

R.Bottom-55, clBlack, fsBorder);

Canvas.Brush.Color := clBtnFace;

Canvas.TextOut(R.Right-80, R.Bottom-50, 'P0, TC/M*2');

Canvas.TextOut(R.Left+20, R.Top+10, 'P2, TC/M*2');

end;

end;

end.

unit Edittub;

interface

uses

SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,

Страницы: 1, 2, 3, 4, 5, 6



© 2003-2013
Рефераты бесплатно, курсовые, рефераты биология, большая бибилиотека рефератов, дипломы, научные работы, рефераты право, рефераты, рефераты скачать, рефераты литература, курсовые работы, реферат, доклады, рефераты медицина, рефераты на тему, сочинения, реферат бесплатно, рефераты авиация, рефераты психология, рефераты математика, рефераты кулинария, рефераты логистика, рефераты анатомия, рефераты маркетинг, рефераты релиния, рефераты социология, рефераты менеджемент.