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

📄 tempf3d.h

📁 是一个结构试验设计的加工曲线的跟踪实现 没有密码。第一次
💻 H
📖 第 1 页 / 共 5 页
字号:
	{
		WResult<<"****!!!采用两点向后差分法而推导的迭代式,ComputeMethod=  "<<ComputeMethod<<endl;
		cout<<"***!!!采用两点向后差分法而推导的迭代式,ComputeMethod=  "<<ComputeMethod<<endl;	
	}
	else 
	{
		WResult<<"****!!!计算方法选择有错,ComputeMethod= "<<ComputeMethod<<endl;
		cout<<"***!!!计算方法选择有错,ComputeMethod=  "<<ComputeMethod<<endl;
		exit(0);
	}

	if(VarTstep==1)
	{
		WResult<<"***!!!采用定时间步长的求解策略,VarTstep=  "<<VarTstep<<endl;
		cout<<"***!!!采用定时间步长的求解策略,VarTstep=  "<<VarTstep<<endl;	
	}
	else if(VarTstep==2)
	{
		WResult<<"***!!!采用变时间步长的求解策略,VarTstep=  "<<VarTstep<<endl;
		cout<<"***!!!采用变时间步长的求解策略,VarTstep=  "<<VarTstep<<endl;	
	}
	else
	{
		WResult<<"****!!!求解策略选择有错,VarTstep= "<<VarTstep<<endl;
		cout<<"***!!!求解策略选择有错,VarTstep=  "<<VarTstep<<endl;
		exit(0);
	}

	if(Water_Method==0)
	{
		WResult<<"***!!!不考虑钢筋混凝土含湿量对温度场的影响,Water_Method= "<<Water_Method<<endl;
		cout<<"***!!!不考虑钢筋混凝土含湿量对温度场的影响,Water_Method= "<<Water_Method<<endl;
	}
	else if(Water_Method==1 || Water_Method==2)
	{
		WResult<<"***!!!考虑钢筋混凝土含湿量对温度场的影响****"<<endl;
		WResult<<"***!!!:含湿量!!!***:  "<<CWaterContent*100<<"%"<<endl;
		WResult<<"***!!!:含湿量采用的计算方法是!!!***:  ";
		cout<<"***!!!考虑钢筋混凝土含湿量对温度场的影响*****"<<endl;
		cout<<"***!!!:含湿量!!!***:  "<<CWaterContent*100<<"%"<<endl;
		cout<<"***!!!:含湿量采用的计算方法是!!!***:  ";
		if(Water_Method==1)
		{
			WResult<<" 参考Lie-韩林海的方法!!!"<<endl;
			cout<<" 参考Lie-韩林海的方法!!!"<<endl;
		}
		else if(Water_Method==2)
		{
			WResult<<" 参考欧洲规范(EC94)的方法!!!"<<endl;
			cout<<" 参考欧洲规范(EC94)的方法!!!"<<endl;
		}
		else if(Water_Method==3){
			WResult<<" 徐玉野建议的方法!!!"<<endl;
			cout<<" 徐玉野建议的方法!!!"<<endl;
		}
	}
	else
	{
		WResult<<"***!!!含水量方法选择有错(Water_Method)!!! "<<Water_Method<<endl;
		cout<<"***!!!含水量方法选择有错(Water_Method)!!!  "<<Water_Method<<endl;
		exit(0);
	}

	if(Bord_heatType==1)
	{
		WResult<<"***!!!分开考虑辐射和对流换热:Bord_heatType= "<<Bord_heatType<<endl;
		cout<<"***!!!分开考虑辐射和对流换热:Bord_heatType= "<<Bord_heatType<<endl;
	}
	else if(Bord_heatType==2)
	{
		WResult<<"***!!!采用综合换热系数(段文玺建议的1985)Bord_heatType= "<<Bord_heatType<<endl; 
		cout<<"***!!!采用综合换热系数(段文玺建议的1985)Bord_heatType= "<<Bord_heatType<<endl; 
	}
	else
	{
		WResult<<"***!!!换热系数方法选择有错(Bord_heatType)!!!  "<<Bord_heatType<<endl;
		cout<<"***!!!换热系数方法选择有错(Bord_heatType)!!!  "<<Bord_heatType<<endl;
		exit(0);
	}

	//***********下面进行单元划分************
	TStoryElem_num=0;  TStoryNode_num=0; 
	TStoryElem_num=TStoryElem_num+(divProt*2+Tdiv1)*(divProt*2+Tdiv2);
	TStoryNode_num=TStoryNode_num+(divProt*2+Tdiv1+1)*(divProt*2+Tdiv2+1);

	zdiv=0;                                                     //设置初值
	zdiv=zdiv1+zdiv5;                                           //
	zdiv22=zdiv2*(int)(Colu_h2/ColuBot_Tiedist+0.0001);         //柱底箍筋加密区的单元划分层数
	zdiv=zdiv+zdiv22;                                           //
	zdiv33=zdiv3*(int)(Colu_h3/Tie_dist+0.0001);                //柱中部箍筋均布区的单元划分层数    
	zdiv=zdiv+zdiv33;                                           //
	zdiv44=zdiv4*(int)(Colu_h4/ColuTop_Tiedist+0.0001);         //柱顶部箍筋加密区的单元划分层数
	zdiv=zdiv+zdiv44; 	                                        //
	bzdiv=zdiv22+zdiv33+zdiv44;                                 //柱箍筋沿柱高的分层数
    //计算温度场分析时的块体单元总数  温度场三维时的情况  
    TConElem_num=TStoryElem_num*zdiv;                           //计算有限元分析时的单元总数
    TNode_num=TStoryNode_num*(zdiv+1);                          //计算有限元分析时的节点总数

	TCElemNode_Info=(long *)calloc(TConElem_num*TElem_node,4);  //三维混凝土块单元信息
    Node_Coor=(double *)calloc(TNode_num*TDimension,8);         //有限元节点坐标信息

	for(loop=0;loop<zdiv;loop++) //混凝土单元信息编码
	{
		for(loop1=0;loop1<2*divProt+Tdiv2;loop1++)
		{
			for(loop2=0;loop2<2*divProt+Tdiv1;loop2++)
			{
				*(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+0)=loop1*(2*divProt+Tdiv1+1)+loop2+loop*TStoryNode_num;
                *(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+1)=loop1*(2*divProt+Tdiv1+1)+loop2+1+loop*TStoryNode_num;
				*(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+2)=(loop1+1)*(2*divProt+Tdiv1+1)+loop2+loop*TStoryNode_num;
			    *(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+3)=(loop1+1)*(2*divProt+Tdiv1+1)+loop2+1+loop*TStoryNode_num;   
                
				*(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+4)=loop1*(2*divProt+Tdiv1+1)+loop2+(loop+1)*TStoryNode_num;
                *(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+5)=loop1*(2*divProt+Tdiv1+1)+loop2+1+(loop+1)*TStoryNode_num;
			    *(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+6)=(loop1+1)*(2*divProt+Tdiv1+1)+loop2+(loop+1)*TStoryNode_num;
			    *(TCElemNode_Info+TElem_node*TStoryElem_num*loop+TElem_node*(loop1*(2*divProt+Tdiv1)+loop2)+7)=(loop1+1)*(2*divProt+Tdiv1+1)+loop2+1+(loop+1)*TStoryNode_num;   
			}
		}
	}
	
	for(loop=0;loop<zdiv+1;loop++)//混凝土单元节点坐标信息
	{
		for(loop1=0;loop1<2*divProt+Tdiv2+1;loop1++)  
		{
			for(loop2=0;loop2<divProt*2+Tdiv1+1;loop2++)
			{
				//计算x坐标
				if(loop2<divProt+1) 
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+0)=loop2*Prot_thick/divProt;
				if(loop2>=divProt+1 && loop2<divProt+Tdiv1+1) 
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+0)=Prot_thick+(loop2-divProt)*(Sectwid-2*Prot_thick)/Tdiv1;
				if(loop2>=divProt+Tdiv1+1) 
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+0)=Sectwid-Prot_thick+(loop2-divProt-Tdiv1)*Prot_thick/divProt;
				//计算y坐标
				if(loop1<divProt+1)  
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+1)=loop1*Prot_thick/divProt;
				if(loop1>=divProt+1 && loop1<divProt+Tdiv2+1) 
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+1)=Prot_thick+(loop1-divProt)*(Sectlen-2*Prot_thick)/Tdiv2;
				if(loop1>=divProt+Tdiv2+1) 
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+1)=Sectlen-Prot_thick+(loop1-divProt-Tdiv2)*Prot_thick/divProt;
				//计算z坐标
				if(loop<zdiv1)  //柱底第一段箍筋至柱底处
				{
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=loop*Colu_h1/zdiv1;
				}
				if(loop>=zdiv1 && loop<zdiv1+zdiv22)   //柱底箍筋加密区
				{
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=Colu_h1+(loop-zdiv1)*ColuBot_Tiedist/zdiv2;
				}
				if(loop>=zdiv1+zdiv22 && loop<zdiv1+zdiv22+zdiv33)     //柱中部箍筋均布区
				{
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=Colu_h1+Colu_h2+(loop-zdiv1-zdiv22)*Tie_dist/zdiv3;
				}
				if(loop>=zdiv1+zdiv22+zdiv33 && loop<zdiv1+zdiv22+zdiv33+zdiv44)  //柱顶箍筋加密区
				{
					*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=Colu_h1+Colu_h2+Colu_h3+(loop-zdiv1-zdiv22-zdiv33)*ColuTop_Tiedist/zdiv4;
				}
				if(loop>=zdiv1+zdiv22+zdiv33+zdiv44 && loop<=zdiv)   //柱顶箍筋至柱顶那一段
				{
					if(zdiv5!=0)  
						*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=Colu_h1+Colu_h2+Colu_h3+Colu_h4+(loop-zdiv1-zdiv22-zdiv33-zdiv44)*Colu_h5/zdiv5;
					if(zdiv5==0)  
						*(Node_Coor+TStoryNode_num*TDimension*loop+TDimension*loop1*(divProt*2+Tdiv1+1)+TDimension*loop2+2)=Colu_high;
				}
			}
		}
	}
	//***********钢筋单元信息编码*******

	//***********钢筋单元节点坐标信息*******

	//计算带宽
	BandWidth=(long *)calloc(TNode_num,4);
	DiagAddress=(long *)calloc(TNode_num,4);
	for(loop=0; loop<TConElem_num; loop++)//带宽的计算
	{   	   
        ibuf=*(TCElemNode_Info+TElem_node*loop+0);  //选出单元中节点编号最小的节点	
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+1)) ibuf=*(TCElemNode_Info+TElem_node*loop+1);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+2)) ibuf=*(TCElemNode_Info+TElem_node*loop+2);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+3)) ibuf=*(TCElemNode_Info+TElem_node*loop+3);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+4)) ibuf=*(TCElemNode_Info+TElem_node*loop+4);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+5)) ibuf=*(TCElemNode_Info+TElem_node*loop+5);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+6)) ibuf=*(TCElemNode_Info+TElem_node*loop+6);
		if(ibuf>*(TCElemNode_Info+TElem_node*loop+7)) ibuf=*(TCElemNode_Info+TElem_node*loop+7);
	
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+0)]<=(*(TCElemNode_Info+TElem_node*loop+0)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+0)]=*(TCElemNode_Info+TElem_node*loop+0)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+1)]<=(*(TCElemNode_Info+TElem_node*loop+1)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+1)]=*(TCElemNode_Info+TElem_node*loop+1)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+2)]<=(*(TCElemNode_Info+TElem_node*loop+2)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+2)]=*(TCElemNode_Info+TElem_node*loop+2)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+3)]<=(*(TCElemNode_Info+TElem_node*loop+3)-ibuf))
			BandWidth[*(TCElemNode_Info+TElem_node*loop+3)]=*(TCElemNode_Info+TElem_node*loop+3)-ibuf+1;

		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+4)]<=(*(TCElemNode_Info+TElem_node*loop+4)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+4)]=*(TCElemNode_Info+TElem_node*loop+4)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+5)]<=(*(TCElemNode_Info+TElem_node*loop+5)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+5)]=*(TCElemNode_Info+TElem_node*loop+5)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+6)]<=(*(TCElemNode_Info+TElem_node*loop+6)-ibuf)) 
			BandWidth[*(TCElemNode_Info+TElem_node*loop+6)]=*(TCElemNode_Info+TElem_node*loop+6)-ibuf+1;
		if(BandWidth[*(TCElemNode_Info+TElem_node*loop+7)]<=(*(TCElemNode_Info+TElem_node*loop+7)-ibuf))
			BandWidth[*(TCElemNode_Info+TElem_node*loop+7)]=*(TCElemNode_Info+TElem_node*loop+7)-ibuf+1;
	}
	//对角地址的计算按一维压缩数组贮存                         
	for(loop=0; loop<TNode_num; loop++)
		DiagAddress[loop]=1;
	for(loop=1; loop<TNode_num; loop++)
	{
		DiagAddress[loop]=0;
		for(loop1=0; loop1<=loop; loop1++)
		{
			DiagAddress[loop]+=BandWidth[loop1];
		}
	}
	for(loop=0; loop<TNode_num; loop++)
		DiagAddress[loop]--;
	TotalLen=DiagAddress[TNode_num-1]+1;  //一维变带宽存储的总个数

	cout<<"***!!!x方向划分单元总数!!!***:  "<<Tdiv1+divProt*2<<endl;
	cout<<"***!!!y方向划分单元总数!!!***:  "<<Tdiv2+divProt*2<<endl;
	cout<<"***!!!钢筋混凝土柱高度z方向划分单元层总数!!!***:  "<<zdiv<<endl;
	cout<<"***!!!三维温度场单元总数!!!***:  "<<TConElem_num<<endl;
	cout<<"***!!!三维温度场节点总数!!!***:  "<<TNode_num<<endl;
	cout<<"***!!!变带宽下三角一维存储总刚度矩阵存储的总刚元素的个数为!!!***:  "<<TotalLen<<endl;
	WResult<<"***!!!x方向划分单元总数!!!***:  "<<Tdiv1+divProt*2<<endl;
	WResult<<"***!!!y方向划分单元总数!!!***:  "<<Tdiv2+divProt*2<<endl;
	WResult<<"***!!!钢筋混凝土柱高度z方向划分单元层总数!!!***:  "<<zdiv<<endl;
	WResult<<"***!!!三维温度场单元总数!!!***:  "<<TConElem_num<<endl;
	WResult<<"***!!!三维温度场节点总数!!!***:  "<<TNode_num<<endl;
	WResult<<"***!!!变带宽下三角一维存储总刚度矩阵存储的总刚元素的个数为!!!***:  "<<TotalLen<<endl;

	//**********边界单元的处理*********
    Border_Elemnum=TStoryElem_num*2;                           //先算柱底和柱顶的边界单元数
    Border_Elemnum=Border_Elemnum+2*(Tdiv1+divProt*2)*zdiv;    //边界底边、上边面
	Border_Elemnum=Border_Elemnum+2*(Tdiv2+divProt*2)*zdiv;    //边界右边、左边面

	cout<<"***!!!三维温度场边界单元总数!!!***:  "<<Border_Elemnum<<endl;
	WResult<<"***!!!三维温度场边界单元总数!!!***:  "<<Border_Elemnum<<endl;

    TBorderCon=(long *)calloc(Border_Elemnum*(1+TElem_node+2),4); 

	//下面计算柱侧面受火部分所对应柱沿高度方向的起始层数和终止层数
    //判断起始层位置
    BFbegceng=0;
    if(BorderFz1<Colu_h1)             
	{
		if(Colu_h1!=0) BFbegceng=(int)(BorderFz1/(Colu_h1/zdiv1)+0.00001);
	}
	if(BorderFz1>=Colu_h1 && BorderFz1<Colu_h1+Colu_h2)             
	{
		BFbegceng=zdiv1+(int)((BorderFz1-Colu_h1)/(ColuBot_Tiedist/zdiv2)+0.00001);
	}
	if(BorderFz1>=Colu_h1+Colu_h2 && BorderFz1<Colu_h1+Colu_h2+Colu_h3)             
	{
		BFbegceng=zdiv1+zdiv22+(int)((BorderFz1-Colu_h1-Colu_h2)/(Tie_dist/zdiv3)+0.00001);
	}
	if(BorderFz1>=Colu_h1+Colu_h2+Colu_h3 && BorderFz1<Colu_h1+Colu_h2+Colu_h3+Colu_h4)             
	{
		BFbegceng=zdiv1+zdiv22+zdiv33+(int)((BorderFz1-Colu_h1-Colu_h2-Colu_h3)/(ColuTop_Tiedist/zdiv4)+0.00001);
	}
	if(BorderFz1>=Colu_h1+Colu_h2+Colu_h3+Colu_h4 && BorderFz1<Colu_high)             
	{
		BFbegceng=zdiv1+zdiv22+zdiv33+zdiv44+(int)((BorderFz1-Colu_h1-Colu_h2-Colu_h3-Colu_h4)/(Colu_h5/zdiv5)+0.00001);
	}
	//判断侧面受火终止层的位置
	BFendceng=zdiv;
	if(BorderFz2<Colu_h1)             
	{
		if(Colu_h1!=0) BFendceng=(int)(BorderFz2/(Colu_h1/zdiv1)+0.00001);
	}
	if(BorderFz2>=Colu_h1 && BorderFz2<Colu_h1+Colu_h2)             
	{
		BFendceng=zdiv1+(int)((BorderFz2-Colu_h1)/(ColuBot_Tiedist/zdiv2)+0.00001);
	}
	if(BorderFz2>=Colu_h1+Colu_h2 && BorderFz2<Colu_h1+Colu_h2+Colu_h3)             
	{
		BFendceng=zdiv1+zdiv22+(int)((BorderFz2-Colu_h1-Colu_h2)/(Tie_dist/zdiv3)+0.00001);
	}
	if(BorderFz2>=Colu_h1+Colu_h2+Colu_h3 && BorderFz2<Colu_h1+Colu_h2+Colu_h3+Colu_h4)             
	{
		BFendceng=zdiv1+zdiv22+zdiv33+(int)((BorderFz2-Colu_h1-Colu_h2-Colu_h3)/(ColuTop_Tiedist/zdiv4)+0.00001);

⌨️ 快捷键说明

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