Выбор материала и расчет параметров обделок вертикальных стволов метрополитеновСтраница 21
4. Приложения
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);