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

📄 struct2d.h

📁 是一个结构试验设计的加工曲线的跟踪实现 没有密码。第一次
💻 H
📖 第 1 页 / 共 5 页
字号:
					Node_Coor[2*i*(divProt*2+Tdiv1+1)+2*j+1]=Sectlen-Prot_thick+(i-divProt-Tdiv2)*Prot_thick/divProt;
			}	
		}
		for(i=0; i<F2ConElem_num; i++)
		{
			*(F2CElemNode_Info+4*i+0)=i+int(i/(div1+divProt*2));
			*(F2CElemNode_Info+4*i+1)=i+int(i/(div1+divProt*2))+1;
			*(F2CElemNode_Info+4*i+2)=i+int(i/(div1+divProt*2))+(div1+divProt*2)+1;
			*(F2CElemNode_Info+4*i+3)=i+int(i/(div1+divProt*2))+(div1+divProt*2)+2;
		}
		for(i=0; i<div2+2*divProt+1; i++)  //行号
		{
			for(j=0; j<div1+2*divProt+1; j++)//
			{
				//节点z坐标 
				if(j<divProt+1)
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j]=Prot_thick*j/divProt;	
				if(j>divProt && j<div1+divProt+1) 
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j]=Prot_thick+(Sectwid-Prot_thick*2)*(j-divProt)/div1;
				if(j>div1+divProt)
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j]=Sectwid-Prot_thick+(j-divProt-div1)*Prot_thick/divProt;
				//节点y坐标
				if(i<divProt+1)
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j+1]=Prot_thick*i/divProt;
				if(i>divProt && i<div2+divProt+1) 
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j+1]=Prot_thick+(Sectlen-Prot_thick*2)*(i-divProt)/div2;
				if(i>div2+divProt)
					F2Node_Coor[2*i*(divProt*2+div1+1)+2*j+1]=Sectlen-Prot_thick+(i-divProt-div2)*Prot_thick/divProt;
			}	
		}	
	}
	if(MeshID==1)  //只有同时进行温度场分析时才可以
	{
        F2Node_num=TNode_num;  //节点总数              
        F2ConElem_num=TConElem_num;   //单元总数
		F2Node_Coor=(double *)calloc(F2Node_num*2,8);
		F2CElemNode_Info=(long *)calloc(F2ConElem_num*4,4);
		for(i=0; i<F2ConElem_num; i++)
		{			
			*(F2CElemNode_Info+4*i+0)=*(TCElemNode_Info+4*i+0);
			*(F2CElemNode_Info+4*i+1)=*(TCElemNode_Info+4*i+1);
			*(F2CElemNode_Info+4*i+2)=*(TCElemNode_Info+4*i+2);
			*(F2CElemNode_Info+4*i+3)=*(TCElemNode_Info+4*i+3);
		}
		for(i=0; i<TNode_num; i++)
		{
			//z坐标
		    F2Node_Coor[2*i]=*(Node_Coor+i*2);
			//y坐标
			F2Node_Coor[2*i+1]=*(Node_Coor+i*2+1);
		}		
	}

	//下面形成截面的形函数矩阵;
	NCSect=(double *)calloc(F2ConElem_num*3,8);
	NSSect=(double *)calloc(F2Longbar_num*3,8);

	//混凝土单元的形函数矩阵
	for(i=0; i<F2ConElem_num; i++)
	{
		*(NCSect+3*i)=1.0;
	    //单元相对于截面形心的z坐标;
	    xyytemp1=F2Node_Coor[*(F2CElemNode_Info+4*i)*2];
        xyytemp2=F2Node_Coor[*(F2CElemNode_Info+4*i+1)*2];
        xyytemp3=F2Node_Coor[*(F2CElemNode_Info+4*i+2)*2];
        xyytemp4=F2Node_Coor[*(F2CElemNode_Info+4*i+3)*2];
        *(NCSect+3*i+2)=(xyytemp1+xyytemp2+xyytemp3+xyytemp4)/4.0-z0;

        //单元相对于截面形心的y坐标
	    xyytemp1=F2Node_Coor[*(F2CElemNode_Info+4*i)*2+1];
        xyytemp2=F2Node_Coor[*(F2CElemNode_Info+4*i+1)*2+1];
        xyytemp3=F2Node_Coor[*(F2CElemNode_Info+4*i+2)*2+1];
        xyytemp4=F2Node_Coor[*(F2CElemNode_Info+4*i+3)*2+1];
        *(NCSect+3*i+1)=(xyytemp1+xyytemp2+xyytemp3+xyytemp4)/4.0-y0;
	}
	
	//钢筋单元的形函数矩阵
	for(i=0; i<F2Longbar_num; i++)
    {
		*(NSSect+3*i)=1.0;
	    //单元相对于截面形心的z坐标
	    *(NSSect+3*i+2)=F2LbarInfo[5*i+0]-z0;

        //单元相对于截面形心的y坐标
	    *(NSSect+3*i+1)=F2LbarInfo[5*i+1]-y0;
    }
	//计算混凝土单元面积和钢筋单元面积的列矩阵
	ConAc=(double *)calloc(F2ConElem_num*F2ConElem_num,8);
	SteAs=(double *)calloc(F2Longbar_num*F2Longbar_num,8);
	for(i=0; i<F2ConElem_num; i++)    //混凝土单元面积
	{
		xyytemp1=fabs(*(F2Node_Coor+*(F2CElemNode_Info+4*i+1)*2)-*(F2Node_Coor+*(F2CElemNode_Info+4*i)*2));
		xyytemp2=fabs(*(F2Node_Coor+*(F2CElemNode_Info+4*i+2)*2+1)-*(F2Node_Coor+*(F2CElemNode_Info+4*i)*2+1));

		*(ConAc+i*F2ConElem_num+i)=xyytemp1*xyytemp2;
	}
	for(i=0; i<F2Longbar_num; i++)    //钢筋单元面积
	{
		SteAs[i*F2Longbar_num+i]=pi*(*(F2LbarInfo+5*i+2))*(*(F2LbarInfo+5*i+2))/4.0;
	}
	
	Ttnode=(double *)calloc(TNode_num,8);
    for(i=0;i<TNode_num;i++)  //网格点的初始温度
		*(Ttnode+i)=iniT0;
	//结构分析的网格节点所对应的温度场分析时的单元号
	F2CN_TE=(long *)calloc(F2Node_num,4);  
	for(i=0; i<F2Node_num; i++)
	{
		//每个节点所对应的坐标;
		xyytemp1=*(F2Node_Coor+i*2);    //z坐标
		xyytemp2=*(F2Node_Coor+i*2+1);  //y坐标
		for(j=0;j<TConElem_num;j++)
		{
			if(xyytemp1>=*(Node_Coor+*(TCElemNode_Info+4*j)*2)-0.0000000000000001 && xyytemp1<=*(Node_Coor+*(TCElemNode_Info+4*j+1)*2)+0.0000000000000001 )
			{
				if(xyytemp2>=*(Node_Coor+*(TCElemNode_Info+4*j)*2+1)-0.0000000000000001 && xyytemp2<=*(Node_Coor+*(TCElemNode_Info+4*j+2)*2+1)+0.0000000000000001 )
				{
					*(F2CN_TE+i)=j;
				}
			}        
		}
	}

	FTnode0=(double *)calloc(F2Node_num,8);
	FTnode1=(double *)calloc(F2Node_num,8); 
   //下面计算结构网格的各节点所对应的初始温度
	for(i=0;i<F2Node_num;i++)
	{
	   *(FTnode0+i)=iniT0;
	   *(FTnode1+i)=iniT0; 
	}

   //计算钢筋对应的初始温度
   STnode0=(double *)calloc(F2Longbar_num,8);
   STnode1=(double *)calloc(F2Longbar_num,8);
   //结构分析的钢筋点的位置所对应的温度场分析时的单元号
   F2SN_TE=(long  *)calloc(F2Longbar_num,4);  
   for(i=0;i<F2Longbar_num;i++)
   {
      //每根钢筋所对应的点的坐标
	  xyytemp1=*(F2LbarInfo+5*i+0);    //z坐标
	  xyytemp2=*(F2LbarInfo+5*i+1);    //y坐标
      for(j=0;j<TConElem_num;j++)
	  {
		  if(xyytemp1>=*(Node_Coor+*(TCElemNode_Info+4*j)*2)-0.0000000000000001  &&  xyytemp1<=*(Node_Coor+*(TCElemNode_Info+4*j+1)*2)+0.0000000000000001 )
		  {
              if(xyytemp2>=*(Node_Coor+*(TCElemNode_Info+4*j)*2+1)-0.0000000000000001 && xyytemp2<=*(Node_Coor+*(TCElemNode_Info+4*j+2)*2+1)+0.0000000000000001 )
			  {
				  *(F2SN_TE+i)=j;
			  }
		  }
      }
   }

   for(i=0;i<F2Longbar_num;i++)//钢筋单元的温度
   {
	   *(STnode0+i)=iniT0;
	   *(STnode1+i)=iniT0;
   }   
   curtime0=0.0;    curtime1=0.0;   TimeZ=0.0;  //初始时间
   CTempZ=(double *)calloc(F2ConElem_num,8);    //混凝土单元温度增量
   STempZ=(double *)calloc(F2Longbar_num,8);    //钢筋单元温度增量
   CElemtemp0=(double *)calloc(F2ConElem_num,8);//各混凝土单元当前时间步的温度
   CElemtemp1=(double *)calloc(F2ConElem_num,8);//各混凝土单元下一时间步的温度 
   //给变量赋初值
   e0=0.0;     wany=0.0;   wanz=0.0;
   //变量赋初值
   CUy0=0.0;	CUz0=0.0;  UAxial0=0.0; UAxial1=0.0;
   xewywz[0][0]=e0;    
   xewywz[1][0]=wanz;
   xewywz[2][0]=wany;
   Zxewywz=(double *)calloc(3,8);
   Zload=(double *)calloc(3,8);
   JuZhen31=(double *)calloc(3,8);
   JuZhens31=(double *)calloc(3,8);
   FcSect=(double *)calloc(3*1,8);     //截面总内力向量
   RFnbanlan=(double *)calloc(3*1,8);  //不平衡力向量
   uAitken31=(double *)calloc(3*1,8);     
   Zxewywz0=(double *)calloc(3*1,8);

   JuZhenC2=(double *)calloc(F2ConElem_num*1,8);
   JuZhenS2=(double *)calloc(F2Longbar_num*1,8);
   for(i=0;i<F2ConElem_num;i++)
	   *(JuZhenC2+i)=0.0;
   for(i=0;i<F2Longbar_num;i++)
	   *(JuZhenS2+i)=0.0;

   ConEstr=(double *)calloc(F2ConElem_num*F2ConElem_num,8);//混凝土单元的应力切线模量列矩阵
   CJZ0=(double *)calloc(F2ConElem_num*F2ConElem_num,8);    //临时变量

   CElemstress=(double *)calloc(F2ConElem_num,8);    //各混凝土单元的应力
   CElemstrain=(double *)calloc(F2ConElem_num,8);    //各混凝土单元的应变   
   ConET=(double *)calloc(F2ConElem_num*F2ConElem_num,8);       //混凝土的温度切线模量矩阵
   ConETime=(double *)calloc(F2ConElem_num*F2ConElem_num,8);    //混凝土的时间切线模量矩阵
	
   SteEstr=(double *)calloc(F2Longbar_num*F2Longbar_num,8); //钢筋单元的应力切线模量
   SteET=(double *)calloc(F2Longbar_num*F2Longbar_num,8);   //钢筋的温度切线模量矩阵
   SteETime=(double *)calloc(F2Longbar_num*F2Longbar_num,8);//钢筋的时间切线模量矩阵
   SJZ0=(double *)calloc(F2Longbar_num*F2Longbar_num,8);    //临时变量

   SElemstress=(double *)calloc(F2Longbar_num,8);     //各钢筋单元的应力
   SElemstrain=(double *)calloc(F2Longbar_num,8);     //各钢筋单元的应变

   ZCZstrain=(double *)calloc(F2ConElem_num,8);       //混凝土的总应变增量向量
   ZSZstrain=(double *)calloc(F2Longbar_num,8);       //钢筋的总应变增量向量   
   ZCStstrain=(double *)calloc(F2ConElem_num,8);      //混凝土的应力应变增量向量
   ZSStstrain=(double *)calloc(F2Longbar_num,8);      //钢筋的应力应变增量向量
   
   liyishuox0=(double *)calloc(F2ConElem_num,8);       //临时变量
   liyishuox1=(double *)calloc(F2ConElem_num,8);       //临时变量
   liyishuok0=(double *)calloc(F2ConElem_num,8);       //临时变量
   liyishuok1=(double *)calloc(F2ConElem_num,8);       //临时变量
   liyishuoy0=(double *)calloc(F2ConElem_num,8);       //临时变量
   liyishuoy1=(double *)calloc(F2ConElem_num,8);       //临时变量
  
   DelFT=(double *)calloc(3,8);      //混凝土的温度增量荷载向量
   DelFTime=(double *)calloc(3,8);   //混凝土的时间增量荷载向量
     
   SJZ_Wendubu=(double *)calloc(F2Longbar_num,8);        //钢筋温度补偿时间(小时)
   SJZ_WendubuDT=(double *)calloc(F2Longbar_num,8);      //钢筋温度补偿时间对温度的导数
   //给变量赋初值;各混凝土单元应力
   for(i=0;i<F2Longbar_num;i++) 
   {                             
	   *(SJZ_Wendubu+i)=0.0;
       *(SJZ_WendubuDT+i)=0.0;
   }

   for(i=0;i<F2ConElem_num;i++)
   {
	   *(CElemstress+i)=0.0;
	   *(CElemstrain+i)=0.0;//各混凝土单元应变
   }   
	
   //各钢筋单元应力
   for(i=0;i<F2Longbar_num;i++)
   {
	   *(SElemstress+i)=0.0;
	   *(SElemstrain+i)=0.0;
   }
   for(i=0;i<F2ConElem_num*F2ConElem_num;i++)  
   {
       *(ConET+i)=0.0;    //混凝土的温度切线模量
	   *(ConETime+i)=0.0; //混凝土的时间切线模量
   }  
   for(i=0;i<3;i++)
   {
	   *(DelFT+i)=0.0;
	   *(DelFTime+i)=0.0;
   }
   
   CUy1=0.0;                          //当前增量步绕z轴的第二次迭代的侧向位移
   CUz1=0.0;                          //当前增量步绕y轴的第二次迭代的侧向位移
   
   CEsmAC=(double *)calloc(F2ConElem_num*F2ConElem_num,8);  //混凝土的应变总弹塑性矩阵
   CETmAC=(double *)calloc(F2ConElem_num*F2ConElem_num,8); 
   CETmAC0=(double *)calloc(F2ConElem_num*F2ConElem_num,8); //混凝土的温度总弹塑性矩阵
   CETimAc=(double *)calloc(F2ConElem_num*F2ConElem_num,8);//混凝土的时间切线模量矩阵
   CETimAc0=(double *)calloc(F2ConElem_num*F2ConElem_num,8);//混凝土的时间切线模量矩阵备份
   NCmES=(double *)calloc(3*F2ConElem_num,8);
   NSmES=(double  *)calloc(3*F2Longbar_num,8);              //钢筋单元形函数矩阵和钢筋应变刚度的乘积
  
   JuZhenC1=(double *)calloc(3*F2ConElem_num,8);
   JuZhenC10=(double *)calloc(3*F2ConElem_num,8);        //临时矩阵
   JuZhenS1=(double *)calloc(3*F2Longbar_num,8);         //钢筋的临时矩阵
   JuZhenS10=(double *)calloc(3*F2Longbar_num,8);        //钢筋的临时矩阵  
 
   for(i=0;i<F2ConElem_num*F2ConElem_num;i++)   
   {
	   *(CETmAC+i)=0.0;
	   *(CETmAC0+i)=0.0;
	   *(CETimAc+i)=0.0;
       *(CETimAc0+i)=0.0;
	   *(CEsmAC+i)=0.0;
   }
   for(i=0;i<3*F2ConElem_num;i++)
	   *(NCmES+i)=0.0;

   F2KZ=(double *)calloc(3*3,8);
   F2KZtemp=(double *)calloc(3*3,8);
   for(i=0;i<3*3;i++)
   {
	   *(F2KZ+i)=0.0;
	   *(F2KZtemp+i)=0.0;
   }

   SEsmAs=(double *)calloc(F2Longbar_num*F2Longbar_num,8);
   SETmAs=(double *)calloc(F2Longbar_num*F2Longbar_num,8);
   SETmAs0=(double *)calloc(F2Longbar_num*F2Longbar_num,8); //钢筋的温度总弹塑性矩阵备份
   SETimAs=(double *)calloc(F2Longbar_num*F2Longbar_num,8);
   SETimAs0=(double *)calloc(F2Longbar_num*F2Longbar_num,8);//钢筋的时间总弹塑性矩阵备份
   CTimeZ=(double *)calloc(F2ConElem_num,8);     //混凝土单元的时间增量
   STimeZ=(double *)calloc(F2Longbar_num,8);     //钢筋单元的时间增量

   for(i=0; i<F2Longbar_num*F2Longbar_num; i++)   
   {
	   *(SETmAs+i)=0.0;
	   *(SteET+i)=0.0;
	   *(SteETime+i)=0.0;
       *(SETimAs+i)=0.0;
	   *(SETmAs0+i)=0.0;
	   *(SETimAs0+i)=0.0;
	   *(SEsmAs+i)=0.0;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -