RUGALMAS SZÁL DIFFERENCIÁLEGYENLETE

Hajlítónyomatéki függvények:

Mh1=-FA*x+MA-(p0/2)(x^2);
Mh2=-FA*x+MA-(p0*a)(x-(a/2))-F1(x-a);

Rugalmas szál differenciálegyenletei:

rugszal1=D[v1[x],{x,2}]==-(Mh1/(I1*E1));
rugszal2=D[v2[x],{x,2}]==-(Mh2/(I2*E2));

Peremfeltételek és illesztési feltételek:

pf1=v1[0]==0;
pf2=v1'[0]==0;
pf3=v1[a]==v2[a];
pf4=v1'[a]==v2'[a];

Megoldás:

megoldas=FullSimplify[DSolve[{rugszal1,rugszal2,pf1,pf2,pf3,pf4},{v1,v2},x]][[1]]

Ismert adatok megadása egyszerűsítés végett:

E2=4E1;
I2=(((1/2))^4)I1;

Lehajlásfüggvények paraméteresen:

vx1=FullSimplify[v1[x]/.megoldas]
vx2=FullSimplify[v2[x]/.megoldas]

FB reakcióerő számítása:

fafbma=Solve[((v2[a+b]/.megoldas)==0)&&(FA+p0*a+F1+FB==0)&&((Mh2/.{x->(a+b)})==-M1),{FA,FB,MA}][[1]]

FA=FullSimplify[FA/.fafbma]

FB=FullSimplify[FB/.fafbma]

MA=FullSimplify[MA/.fafbma]

Lehajlásfüggvények alakja ezek után:

vx1=FullSimplify[vx1/.fafbma]
vx2=FullSimplify[vx2/.fafbma]

Numerikus adatok megadása:

E1=50.*(10^9);
d1=0.04;
a=0.8;
b=0.4;
p0=-5000;
F1=2500;
M1=-500;

I1=(((d1^4)π)/64.);

A lehajlásfüggvények numerikusan:

v1EX=Expand[vx1]
v2EX=Expand[vx2]

A szögelfordulás függvények numerikusan:

φ1EX=D[v1EX,x]
φ2EX=D[v2EX,x]

A lehajlásfüggvények ábrázolása:

plotv1EX=Plot[v1EX,{x,0,a},PlotRange->All,PlotStyle->{Red,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Red]];
plotv2EX=Plot[v2EX,{x,a,a+b},PlotRange->All,PlotStyle->{Green,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Green]];
PLvEX=Show[{plotv1EX,plotv2EX},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","v [m]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

A szögelfordulás függvények ábrázolása:

plotφ1EX=Plot[φ1EX,{x,0,a},PlotRange->All,PlotStyle->{Red,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Red]];
plotφ2EX=Plot[φ2EX,{x,a,a+b},PlotRange->All,PlotStyle->{Green,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Green]];
PLφEX=Show[{plotφ1EX,plotφ2EX},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","φ [rad]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

FA, FB, MA értéke numerikusan:

FA=N[FA]
FB=N[FB]
MA=N[MA]

Hajlítónyomatéki függvények:

Mh1EX=Expand[Mh1]
Mh2EX=Expand[Mh2]

Hajlítónyomatéki függvények ábrázolása:

plotMh1EX=Plot[Mh1EX,{x,0,a},PlotRange->All,PlotStyle->{Red,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Red]];
plotMh2EX=Plot[Mh2EX,{x,a,a+b},PlotRange->All,PlotStyle->{Green,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Green]];
PLMhEX=Show[{plotMh1EX,plotMh2EX},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","Mh [Nm]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

Nyíró igénybevételi függvények:

V1EX=D[Mh1EX,x]
V2EX=D[Mh2EX,x]

Nyíró igénybevételi függvények ábrázolása:

plotV1EX=Plot[V1EX,{x,0,a},PlotRange->All,PlotStyle->{Red,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Red]];
plotV2EX=Plot[V2EX,{x,a,a+b},PlotRange->All,PlotStyle->{Green,Thick},Filling->0,FillingStyle->Directive[Opacity[0.2],Green]];
PLVEX=Show[{plotV1EX,plotV2EX},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","V [N]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

Hajlítónyomatéki igénybevétel a K keresztmetszetben:

xK=a/2;

MhKEX=Mh1/.{x->xK}

VÉGESELEMES MEGOLDÁS

Elem merevségi mátrix:

KE=((Iz*RUG)/(L^3))(({{12, 6*L, -12, 6*L}, {6*L, 4*(L^2), -6*L, 2*(L^2)}, {-12, -6*L, 12, -6*L}, {6*L, 2*(L^2), -6*L, 4*(L^2)}}));

Az elemekhez tartozó elem merevségi mátrixok:

L1=a;
L2=b;

KE1=KE/.{Iz->I1,RUG->E1,L->L1};
KE2=KE/.{Iz->I2,RUG->E2,L->L2};

MatrixForm[KE1]
MatrixForm[KE2]

Az elemekhez tartozó szabadsági fokok megadása:

elem1={1,2,3,4};
elem2={3,4,5,6};

Globális merevségi mátrix összeállítása:

KGLOB=Table[0,{6},{6}];

Do[
KGLOB[[elem1[[j]],elem1[[i]]]]=KE1[[j,i]];
,{i,1,4},{j,1,4}];
Do[
KGLOB[[elem2[[j]],elem2[[i]]]]=KGLOB[[elem2[[j]],elem2[[i]]]]+KE2[[j,i]];
,{i,1,4},{j,1,4}];

MatrixForm[KGLOB]

A globális tehervektor megadása:

FGLOB=Table[0,{6}];

FGLOB[[1]]=FAHULLAM+((p0*L1)/2.);
FGLOB[[2]]=MAHULLAM+((p0*(L1^2))/12.);
FGLOB[[3]]=F1+((p0*L1)/2.);
FGLOB[[4]]=-((p0*(L1^2))/12.);
FGLOB[[5]]=FBHULLAM;
FGLOB[[6]]=M1;

MatrixForm[FGLOB]

Az ismeretlen elmozdulás koordinátákat megakpjuk, ha töröljük a kényszereknek megfelelő sorokat és oszlopokat, és megoldjuk a redukált merevségi egyenletet. Jelen esetben az 1,2,5-höz tartozó sorok, oszlopok törlését jelenti.

KGLOB2=KGLOB[[{3,4,6},{3,4,6}]];MatrixForm[KGLOB2]

FGLOB2=FGLOB[[{3,4,6}]];MatrixForm[FGLOB2]

LinearSolve[KGLOB2,FGLOB2]

A megoldás előállítható úgy is, hogy nem töröljük a kényszereknek megfelelő sorokat és oszlopokat, hanem a helyükre 0-t írunk be, valamit a K főátlóiba ezeken a helyeken 1-et:

KGLOB2=KGLOB;

KGLOB2[[All,1]]=0;
KGLOB2[[1,All]]=0;
KGLOB2[[All,2]]=0;
KGLOB2[[2,All]]=0;
KGLOB2[[All,5]]=0;
KGLOB2[[5,All]]=0;
KGLOB2[[1,1]]=1;
KGLOB2[[2,2]]=1;
KGLOB2[[5,5]]=1;

MatrixForm[KGLOB2]

A globális tehervektorban a peremfeltételek szerinti sorok “nullázása”:

FGLOB2=FGLOB;

FGLOB2[[1]]=0;
FGLOB2[[2]]=0;
FGLOB2[[5]]=0;

Megoldás:

U=LinearSolve[KGLOB2,FGLOB2]

MatrixForm[U]

A csomóponti terhelések számítása:

FORCE=KGLOB.U;
MatrixForm[FORCE]

Befogásánál a reakcióerő és nyomaték az xy koordinátarendszerben megadva:

FA=Solve[FGLOB[[1]]==FORCE[[1]]]

MA=Solve[FGLOB[[2]]==FORCE[[2]]]

FB=Solve[FGLOB[[5]]==FORCE[[5]]]

A lehajlásfüggvények megadása a végeselemes megoldás esetén:

Formafüggvények:

NU1=(1/4)(((1-ξ))^2)(2+ξ);
NU2=(1/8)Le(((1-ξ))^2)(1+ξ);
NU3=(1/4)(((1+ξ))^2)(2-ξ);
NU4=-(1/8)Le(((1+ξ))^2)(1-ξ);

Az egyes szakaszokon az interpoláció:

v1VEM=Expand[(NU1*U[[1]]+NU2*U[[2]]+NU3*U[[3]]+NU4*U[[4]])/.{Le->L1}]
v2VEM=Expand[(NU1*U[[3]]+NU2*U[[4]]+NU3*U[[5]]+NU4*U[[6]])/.{Le->L2}]

Globális koordináták beírása

v1VEM=Chop[Expand[v1VEM/.{ξ->(((2x)/L1)-1)}]]
v2VEM=Chop[Expand[v2VEM/.{ξ->((((2(x-a))/L2)-1))}]]

A lehajlásfüggvények ábrázolása:

plotv1VEM=Plot[v1VEM,{x,0,a},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
plotv2VEM=Plot[v2VEM,{x,a,a+b},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
PLvVEM=Show[{plotv1VEM,plotv2VEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","v [m]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

A lehajlásfüggvények ábrázolása a pontos megoldás feltüntetésével:

PLvVEMX=Show[{PLvEX,PLvVEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","v [m]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

A szögelfordulás függvények megadása a végeselemes megoldás esetén:

φ1VEM=D[v1VEM,x]
φ2VEM=D[v2VEM,x]

A szögelfordulás függvények ábrázolása:

plotφ1VEM=Plot[φ1VEM,{x,0,a},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
plotφ2VEM=Plot[φ2VEM,{x,a,a+b},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
PLφVEM=Show[{plotφ1VEM,plotφ2VEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","φ [rad]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

A szögelfordulás függvények ábrázolása a pontos megoldás feltüntetésével:

PLφVEMX=Show[{PLφEX,PLφVEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","φ [rad]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

Hajlítónyomatéki függvények számítása:

Mh1VEM=Expand[-I1*E1*D[v1VEM,{x,2}]]
Mh2VEM=Expand[-I2*E2*D[v2VEM,{x,2}]]

Hajlítónyomatéki függvények ábrázolása:

plotMh1VEM=Plot[Mh1VEM,{x,0,a},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
plotMh2VEM=Plot[Mh2VEM,{x,a,a+b},PlotRange->All,PlotStyle->{Black,Thick,Dashed}];
PLMhVEM=Show[{plotMh1VEM,plotMh2VEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","Mh [Nm]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

Hajlítónyomatéki függvények ábrázolása a pontos értékek feltüntetésével:

PLMhVEMX=Show[{PLMhEX,PLMhVEM},PlotRange->All,AxesOrigin->{0,0},AxesLabel->{"x [m]","Mh [Nm]"},GridLines->{{a,b},Automatic},GridLinesStyle->Directive[Gray,Dashed]]

Hajlítónyomatéki igénybevétel a K keresztmetszetben:

MhKVEM=Mh1VEM/.{x->xK}

HIBAMhKVEM=Abs[((MhKVEM-MhKEX)/MhKEX)]*100

MhKEX