📄 struct2d.h
字号:
{
*(ConEstr+j*F2ConElem_num+j)=0.0;
*(ConET+j*F2ConElem_num+j)=0.0;
*(ConETime+j*F2ConElem_num+j)=0.0;
}
}
}
//形成钢筋的切线模量矩阵
for(j=0; j<F2Longbar_num; j++)
{
Wendubu=*(SJZ_Wendubu+j); //钢筋温度补偿时间(小时)
WendubuDT=*(SJZ_WendubuDT+j);
//先求单元的温度
xyytemp1=*(STnode0+j);
*(SteEstr+j*F2Longbar_num+j)=Esst(Ssresta,*(SElemstress+j),*(SElemstrain+j),xyytemp1,curtime0,*(F2LbarInfo+5*j+3),*(F2LbarInfo+5*j+3)/(*(F2LbarInfo+5*j+4)));
*(SteET+j*F2Longbar_num+j)=Estempt(Ssresta,*(SElemstress+j),*(SElemstrain+j),xyytemp1,curtime0,*(F2LbarInfo+5*j+3),*(F2LbarInfo+5*j+3)/(*(F2LbarInfo+5*j+4)));
*(SteETime+j*F2Longbar_num+j)=Estimet(Ssresta,*(SElemstress+j),*(SElemstrain+j),xyytemp1,curtime0,*(F2LbarInfo+5*j+3),*(F2LbarInfo+5*j+3)/(*(F2LbarInfo+5*j+4)));
}
//下面形成总刚度矩阵
//计算混凝土对总刚度矩阵的贡献
for(j=0; j<F2ConElem_num; j++)
{
*(CEsmAC+j*F2ConElem_num+j)=*(ConEstr+j*F2ConElem_num+j)*(*(ConAc+j*F2ConElem_num+j));
}
//下面为两矩阵相乘
for(j=0; j<3; j++)//先将混凝土单元形函数转置
for(k=0; k<F2ConElem_num; k++)
*(JuZhenC1+j*F2ConElem_num+k)=*(NCSect+k*3+j);
matmpl(JuZhenC1,3,F2ConElem_num,CEsmAC,F2ConElem_num,NCmES);
matmpl(NCmES,3,F2ConElem_num,NCSect,3,F2KZ);
//计算钢筋对总刚度矩阵的贡献
for(j=0;j<F2Longbar_num;j++)
{
*(SEsmAs+j*F2Longbar_num+j)=*(SteEstr+j*F2Longbar_num+j)*(*(SteAs+j*F2Longbar_num+j));
}
//下面为两矩阵相乘
for(j=0; j<3; j++) //先将钢筋单元形函数转置
for(k=0; k<F2Longbar_num; k++)
*(JuZhenS1+j*F2Longbar_num+k)=*(NSSect+k*3+j);
matmpl(JuZhenS1,3,F2Longbar_num,SEsmAs,F2Longbar_num,NSmES);
matmpl(NSmES,3,F2Longbar_num,NSSect,3,F2KZtemp);
//总刚度矩阵形成完毕
for(j=0;j<3*3;j++)
{
*(F2KZ+j)=*(F2KZ+j)+*(F2KZtemp+j);
//printf("%.5f\n",*(F2KZ+j));
*(F2KZtemp+j)=*(F2KZ+j);
}
//下面计算混凝土的温度总弹塑性矩阵
for(j=0; j<F2ConElem_num; j++)
{
*(CETmAC+j*F2ConElem_num+j)=*(ConET+j*F2ConElem_num+j)*(*(ConAc+j*F2ConElem_num+j));
}
//下面计算钢筋的温度总弹塑性矩阵
for(j=0;j<F2Longbar_num;j++)
{
*(SETmAs+j*F2Longbar_num+j)=*(SteET+j*F2Longbar_num+j)*(*(SteAs+j*F2Longbar_num+j));
}
//下面计算混凝土的时间总弹塑性矩阵
for(j=0;j<F2ConElem_num;j++)
{
*(CETimAc+j*F2ConElem_num+j)=*(ConETime+j*F2ConElem_num+j)*(*(ConAc+j*F2ConElem_num+j));
}
//下面计算钢筋的时间总弹塑性矩阵
for(j=0;j<F2Longbar_num;j++)
{
*(SETimAs+j*F2Longbar_num+j)=*(SteETime+j*F2Longbar_num+j)*(*(SteAs+j*F2Longbar_num+j));
}
if(F2method==1) //按Lie的方法
{
CUy0=-(ComLength*ComLength*xewywz[1][0]/12.0+u0y);//上一迭代步结束时y方向的侧移
CUz0=-(ComLength*ComLength*xewywz[2][0]/12.0+u0z);//上一迭代步结束时z方向的侧移
}
if(F2method==2) //按韩林海的方法
{
CUy0=-(ComLength*ComLength*xewywz[1][0]/pi/pi+u0y);//上一迭代步结束时y方向的侧移
CUz0=-(ComLength*ComLength*xewywz[2][0]/pi/pi+u0z);//上一迭代步结束时z方向的侧移
}
if(PHxiaozheng==1) //采用平衡校正的迭代算法
{
//计算迭代步开始时截面总内力
//先求混凝土对内力的贡献
matmpl(ConAc,F2ConElem_num,F2ConElem_num,CElemstress,1,JuZhenC2);
//先将混凝土单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=*(NCSect+k*3+j);
matmpl(JuZhenC1,3,F2ConElem_num,JuZhenC2,1,FcSect);
//printf("截面实际内力:%.3f %.3f %.3f\n",*(FcSect+0),*(FcSect+1),*(FcSect+2));
//计算钢筋对内力的贡献
matmpl(SteAs,F2Longbar_num,F2Longbar_num,SElemstress,1,JuZhenS2);
//先将钢筋单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=*(NSSect+k*3+j);
matmpl(JuZhenS1,3,F2Longbar_num,JuZhenS2,1,JuZhens31);
//printf("钢筋截面实际内力:%.3f %.3f %.3f\n",*(JuZhens31+0),*(JuZhens31+1),*(JuZhens31+2));
for(j=0;j<3;j++)
*(FcSect+j)=*(FcSect+j)+*(JuZhens31+j);
//printf("截面实际内力:%d %.3f %.3f %.3f\n",i,*(FcSect+0),*(FcSect+1),*(FcSect+2));
//计算不平衡力
*(RFnbanlan+0)=PCentral-*(FcSect+0);
*(RFnbanlan+1)=-PCentral*CUy0-*(FcSect+1);
*(RFnbanlan+2)=-PCentral*CUz0-*(FcSect+2);
}
//温度增量荷载向量和时间增量荷载向量
if(EuAdams==1)//温度增量荷载向量
{
//采用Euler方法
//先将混凝土单元形函数转置
for(j=0;j<3;j++)
{
for(k=0;k<F2ConElem_num;k++)
{
*(JuZhenC1+j*F2ConElem_num+k)=-*(NCSect+k*3+j);
}
}
matmpl(JuZhenC1,3,F2ConElem_num,CETmAC,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTempZ,1,DelFT);
//钢筋的贡献
for(j=0;j<3;j++)//先将钢筋单元形函数转置
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=-*(NSSect+k*3+j);
matmpl(JuZhenS1,3,F2Longbar_num,SETmAs,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STempZ,1,JuZhens31);
//printf("混凝土温度增量荷载向量1:%.2f %.2f %.2f\n",*(DelFT+0),*(DelFT+1),*(DelFT+2));
//printf("钢筋温度增量荷载向量2:%.2f %.2f %.2f\n",*(JuZhens31+0),*(JuZhens31+1),*(JuZhens31+2));
for(j=0;j<3;j++)
*(DelFT+j)=*(DelFT+j)+*(JuZhens31+j);
}
if(EuAdams==2)//Euler和Adams显示方法联合预测
{
if(i==0)
{
//采用Euler方法;
//先将混凝土单元形函数转置;
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=-*(NCSect+k*3+j);
matmpl(JuZhenC1,3,F2ConElem_num,CETmAC,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTempZ,1,DelFT);
//钢筋的贡献;
//先将钢筋单元形函数转置;
for(j=0;j<3;j++)
{
for(k=0;k<F2Longbar_num;k++)
{
*(JuZhenS1+j*F2Longbar_num+k)=-*(NSSect+k*3+j);
}
}
matmpl(JuZhenS1,3,F2Longbar_num,SETmAs,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STempZ,1,JuZhens31);
for(j=0;j<3;j++)
*(DelFT+j)=*(DelFT+j)+*(JuZhens31+j);
}
if(i!=0) //采用Adams显示预测方法
{
//先将混凝土单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=*(NCSect+k*3+j);
for(j=0;j<F2ConElem_num*F2ConElem_num;j++)
{
*(CJZ0+j)=-*(CETmAC+j)*3.0/2.0+*(CETmAC0+j)/2.0;
}
matmpl(JuZhenC1,3,F2ConElem_num,CJZ0,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTempZ,1,DelFT);
//钢筋的贡献
for(j=0;j<3;j++)//先将钢筋单元形函数转置
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=*(NSSect+k*3+j);
for(j=0;j<F2Longbar_num*F2Longbar_num;j++)
*(SJZ0+j)=-*(SETmAs+j)*3.0/2.0+*(SETmAs0+j)/2.0;
matmpl(JuZhenS1,3,F2Longbar_num,SJZ0,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STempZ,1,JuZhens31);
for(j=0;j<3;j++)
*(DelFT+j)=*(DelFT+j)+*(JuZhens31+j);
}
}
//时间增量荷载向量;
if(EuAdams==1)//采用Euler方法
{
//先将混凝土单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=-*(NCSect+k*3+j);
matmpl(JuZhenC1,3,F2ConElem_num,CETimAc,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTimeZ,1,DelFTime);
//钢筋的贡献
//先将钢筋单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=-*(NSSect+k*3+j);
matmpl(JuZhenS1,3,F2Longbar_num,SETimAs,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STimeZ,1,JuZhens31);
for(j=0;j<3;j++)
*(DelFTime+j)=*(DelFTime+j)+*(JuZhens31+j);
}
if(EuAdams==2)//Euler和Adams显示方法联合预测
{
if(i==0)
{
//先将混凝土单元形函数转置
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=-*(NCSect+k*3+j);
matmpl(JuZhenC1,3,F2ConElem_num,CETimAc,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTimeZ,1,DelFTime);
//钢筋的贡献
for(j=0;j<3;j++)//先将钢筋单元形函数转置
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=-*(NSSect+k*3+j);
matmpl(JuZhenS1,3,F2Longbar_num,SETimAs,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STimeZ,1,JuZhens31);
for(j=0;j<3;j++)
*(DelFTime+j)=*(DelFTime+j)+*(JuZhens31+j);
}
if(i!=0) //采用Euler和Adams显示预测方法
{
//先将混凝土单元形函数转置;
for(j=0;j<3;j++)
for(k=0;k<F2ConElem_num;k++)
*(JuZhenC1+j*F2ConElem_num+k)=*(NCSect+k*3+j);
for(j=0;j<F2ConElem_num*F2ConElem_num;j++)
{
*(CJZ0+j)=-*(CETimAc+j)*3.0/2.0+*(CETimAc0+j)/2.0;
//*(CJZ0+j)=-*(CETimAc+j);
}
matmpl(JuZhenC1,3,F2ConElem_num,CJZ0,F2ConElem_num,JuZhenC10);
matmpl(JuZhenC10,3,F2ConElem_num,CTimeZ,1,DelFTime);
//钢筋的贡献
for(j=0;j<3;j++)//先将钢筋单元形函数转置
for(k=0;k<F2Longbar_num;k++)
*(JuZhenS1+j*F2Longbar_num+k)=*(NSSect+k*3+j);
for(j=0;j<F2Longbar_num*F2Longbar_num;j++)
*(SJZ0+j)=-*(SETimAs+j)*3.0/2.0+*(SETimAs0+j)/2.0;
matmpl(JuZhenS1,3,F2Longbar_num,SJZ0,F2Longbar_num,JuZhenS10);
matmpl(JuZhenS10,3,F2Longbar_num,STimeZ,1,JuZhens31);
for(j=0;j<3;j++)
*(DelFTime+j)=*(DelFTime+j)+*(JuZhens31+j);
}
}
//温度总弹塑性矩阵和时间总弹塑性矩阵备份
for(j=0;j<F2ConElem_num*F2ConElem_num;j++)
{
*(CETmAC0+j)=*(CETmAC+j); //混凝土温度总弹塑性矩阵备份
*(CETimAc0+j)=*(CETimAc+j); //混凝土时间总弹塑性矩阵备份
}
for(j=0;j<F2Longbar_num*F2Longbar_num;j++)
{
*(SETmAs0+j)=*(SETmAs+j); //钢筋温度总弹塑性矩阵备份
*(SETimAs0+j)=*(SETimAs+j); //钢筋时间总弹塑性矩阵备份
}
//下面形成荷载增量向量
if(F2method==1) //按Lie的方法
{
CUy0=-(ComLength*ComLength*xewywz[1][0]/12.0+u0y);
CUz0=-(ComLength*ComLength*xewywz[2][0]/12.0+u0z);
*(Zload+0)=*(DelFT+0)+*(DelFTime+0)+*(RFnbanlan+0); //轴压荷载增量
*(Zload+1)=*(DelFT+1)+*(DelFTime+1)+*(RFnbanlan+1);
*(Zload+2)=*(DelFT+2)+*(DelFTime+2)+*(RFnbanlan+2);
//下面修正总刚度系数;
*(F2KZtemp+3*1+1)=*(F2KZtemp+3*1+1)-PCentral*ComLength*ComLength/12.0;
*(F2KZtemp+3*2+2)=*(F2KZtemp+3*2+2)-PCentral*
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -