📄 kb_trilinear.m
字号:
function [kk2,x2,f2,nst]=kb_trilinear(per,nt,m,eta,kk1,k1,k2,k3,ux,uy,dt,xg,x1,x2,f1,nst)
%半退化三线型恢复力模型,适用于砌体结构非线性地震分析;
%第一轮刚度开裂前为k1,开裂后为k2;第二轮刚度开裂前为k0,开裂后为k3;;
py=k1*ux+k2*(uy-ux);
k0=py/uy;px=k1*ux;
f2=f1+kk1*(x2(1)-x1(1));
f0=(k1-k2)*ux;
if(nst==0)
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,kk1,k1,k2,ux,dt,xg,x1,x2,f1);
if(kk2==k1)
xup=(f0+x2(1)*k1-f2)/(k1-k2);
xdn=xup-2*ux;
fup=f0+k2*xup;
fdn=fup-2*px;
if(xup>uy)
nst=1;
if(kk1==k1)
xup1=(f0+x1(1)*k1-f1)/(k1-k2);
xdn1=xup1-2*ux;
fup1=f0+k2*xup1;
fdn1=fup1-2*px;
[tq,xq]=guaidian1(dt,k1,m,eta,xg,x1,xup1);
txg(1)=xg(1)+(xg(2)-xg(1))*tq/dt;
txg(2)=xg(2);
fq=f1+k1*(xup1-x1(1));
dt1=dt-tq;
[tm,xm]=guaidian1(dt1,k2,m,eta,txg,xq,uy);
dtm=dt1-tm;
fm=fq+k2*(uy-xup1);%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*(tm+tq)/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
else%%kk1=k2;
[tm,xm]=guaidian1(dt,k2,m,eta,xg,x1,uy);
dtm=dt-tm;
fm=f1+k2*(xm(1)-x1(1));%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*tm/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
end
elseif(xdn<-uy)
nst=1;
if(kk1==k1)
xup1=(f0+x1(1)*k1-f1)/(k1-k2);
xdn1=xup1-2*ux;
fup1=f0+k2*xup1;
fdn1=fup1-2*px;
[tq,xq]=guaidian1(dt,k1,m,eta,xg,x1,xdn1);
txg(1)=xg(1)+(xg(2)-xg(1))*tq/dt;
txg(2)=xg(2);
fq=f1+k1*(xdn1-x1(1));
dt1=dt-tq;
[tm,xm]=guaidian1(dt1,k2,m,eta,txg,xq,-uy);
dtm=dt1-tm;
fm=fq+k2*(-uy-xdn1);%%%fm=-py;
txg(1)=xg(1)+(xg(2)-xg(1))*(tm+tq)/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
else%%kk1=k2;
[tm,xm]=guaidian1(dt,k2,m,eta,xg,x1,-uy);
dtm=dt-tm;
fm=f1+k2*(xm(1)-x1(1));%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*tm/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
end
elseif(xup==uy)
nst=1;
if(x2(2)>0)
kk2=k3;
else
kk2=k0;
end
elseif(xdn==-uy)
nst=1;
if(x2(2)<0)
kk2=k3;
else
kk2=k0;
end
else%可不做处理;
end
else%kk2=k2
if(x2(1)>uy)
nst=1;
if(kk1==k1)
xup1=(f0+x1(1)*k1-f1)/(k1-k2);
xdn1=xup1-2*ux;
fup1=f0+k2*xup1;
fdn1=fup1-2*px;
[tq,xq]=guaidian1(dt,k1,m,eta,xg,x1,xup1);
txg(1)=xg(1)+(xg(2)-xg(1))*tq/dt;
txg(2)=xg(2);
fq=f1+k1*(xup1-x1(1));
dt1=dt-tq;
[tm,xm]=guaidian1(dt1,k2,m,eta,txg,xq,uy);
dtm=dt1-tm;
fm=fq+k2*(uy-xup1);%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*(tm+tq)/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
else%%kk1=k2;
[tm,xm]=guaidian1(dt,k2,m,eta,xg,x1,uy);
dtm=dt-tm;
fm=f1+k2*(xm(1)-x1(1));%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*tm/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
end
elseif(x2(1)<-uy)
nst=1;
if(kk1==k1)
xup1=(f0+x1(1)*k1-f1)/(k1-k2);
xdn1=xup1-2*ux;
fup1=f0+k2*xup1;
fdn1=fup1-2*px;
[tq,xq]=guaidian1(dt,k1,m,eta,xg,x1,xdn1);
txg(1)=xg(1)+(xg(2)-xg(1))*tq/dt;
txg(2)=xg(2);
fq=f1+k1*(xdn1-x1(1));
dt1=dt-tq;
[tm,xm]=guaidian1(dt1,k2,m,eta,txg,xq,-uy);
dtm=dt1-tm;
fm=fq+k2*(-uy-xdn1);%%%fm=-py;
txg(1)=xg(1)+(xg(2)-xg(1))*(tm+tq)/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
else%%kk1=k2;
[tm,xm]=guaidian1(dt,k2,m,eta,xg,x1,-uy);
dtm=dt-tm;
fm=f1+k2*(xm(1)-x1(1));%%%fm=py;
txg(1)=xg(1)+(xg(2)-xg(1))*tm/dt;
txg(2)=xg(2);
[x2]=newmark_single(dtm,k3,m,eta,txg,xm);
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,k3,k0,k3,uy,dtm,txg,xm,x2,fm);
end
elseif(x2(1)==uy)
nst=1;
if(x2(2)>0)
kk2=k3;
else
kk2=k0;
end
elseif(x2(1)==-uy)
nst=1;
if(x2(2)<0)
kk2=k3;
else
kk2=k0;
end
else%可不做处理;
end
end
else%%nst=1
[kk2,x2,f2]=ks_bilinear(per,nt,m,eta,kk1,k0,k3,uy,dt,xg,x1,x2,f1);
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -