⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 struct2d.h

📁 是一个结构试验设计的加工曲线的跟踪实现 没有密码。第一次
💻 H
📖 第 1 页 / 共 5 页
字号:
			   { 
				   *(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 + -