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

📄 main.cpp

📁 结构矩阵分析
💻 CPP
📖 第 1 页 / 共 3 页
字号:
	fin>>(node+i)->z;
	fin>>(node+i)->rx;
	fin>>(node+i)->ry;
	fin>>(node+i)->rz;
	fin>>(node+i)->rmx;
	fin>>(node+i)->rmy;
	fin>>(node+i)->rmz;
}

for(i=0;i<number_of_material;i++)
{
	fin>>(material+i)->A;
	fin>>(material+i)->E;
	fin>>(material+i)->I;
}
for(i=0;i<number_of_unit;i++)
{
	fin>>(unit+i)->serial_of_material;
	fin>>(unit+i)->head;
	fin>>(unit+i)->tail;
	fin>>(unit+i)->C;
}
for(i=0;i<number_of_load;i++)
{
	fin>>(load+i)->serial_of_node;
	fin>>(load+i)->fx;
	fin>>(load+i)->fy;
	fin>>(load+i)->fz;
	fin>>(load+i)->mx;
	fin>>(load+i)->my;
	fin>>(load+i)->mz;
}

for(i=0;i<number_of_focus_load;i++)
{
	fin>>(focus_load+i)->serial_of_element;
	fin>>(focus_load+i)->local_of_force;
	fin>>(focus_load+i)->fx;
	fin>>(focus_load+i)->fy;
	fin>>(focus_load+i)->fz;
	fin>>(focus_load+i)->mx;
	fin>>(focus_load+i)->my;
	fin>>(focus_load+i)->mz;
}

for(i=0;i<number_of_spread_load;i++)
{
	fin>>(spread_load+i)->serial_of_element;
	fin>>(spread_load+i)->start_local;
	fin>>(spread_load+i)->end_local;
	fin>>(spread_load+i)->start_fx;
	fin>>(spread_load+i)->start_fy;
	fin>>(spread_load+i)->start_fz;
	fin>>(spread_load+i)->end_fx;
	fin>>(spread_load+i)->end_fy;
	fin>>(spread_load+i)->end_fz;
}



/////////////////////////////////////////////////////belong to team 2
    
/* 以下:
  自由度编号以及 LM 数组生成
  各节点的自由度信息保存在 结构 node_df 里面

*/
int num1; num1 = 1;
int num2; num2 = -1;

struct node_df *df=new struct node_df[number_of_node];//节点自由度结构 node_df 指针

for(i=0;i<number_of_node;i++)
{  
	if( ((node+i)->rx) == 1 )               
	{ (df+i)->x = num2;        //被约束的自由度标为负数
	num2--;
	}
	else
	{ (df+i)->x = num1;        //无约束的自由度标为负数 
	num1++;
	}

	if( ((node+i)->ry) == 1 )
	{ (df+i)->y = num2;
	num2--;
	}
	else
	{ (df+i)->y = num1;
	num1++;
	}

	if( ((node+i)->rmz) == 1 )
	{ (df+i)->m = num2;
	num2--;
	}
	else
	{ (df+i)->m = num1;
	num1++;
	}
}


/*
//以下为所给例题(data.txt)的节点自由度信息输出
for(i=0;i<number_of_node;i++)
{
cout<<(df+i)->x<<"  "<<(df+i)->y<<"  "<<(df+i)->m<<"  ";
cout<<endl;
}
*/



struct element_df *e_df=new struct element_df[number_of_unit];  // 单元节点自由度( LM )数组
                   // *e_df即( LM )数组 , 约束的赋为 负数 , 未约束的赋为 正数,
                   // 杆单元的节点转角赋为 0 ; 

for(i=0;i<number_of_unit;i++)                //( LM )数组赋值,按单元循环  
{ 
	if((unit+i)->C=='F')
	{
		(e_df+i)->x1 = (df+((unit+i)->head)-1)->x;
	    (e_df+i)->y1 = (df+((unit+i)->head)-1)->y;
	    (e_df+i)->m1 = (df+((unit+i)->head)-1)->m;	

	    (e_df+i)->x2 = (df+((unit+i)->tail)-1)->x;
	    (e_df+i)->y2 = (df+((unit+i)->tail)-1)->y;
	    (e_df+i)->m2 = (df+((unit+i)->tail)-1)->m;
	}
	if((unit+i)->C=='T')
	{
	    (e_df+i)->x1 = (df+((unit+i)->head)-1)->x;
	    (e_df+i)->y1 = (df+((unit+i)->head)-1)->y;
	    (e_df+i)->m1 = 0;	

	    (e_df+i)->x2 = (df+((unit+i)->tail)-1)->x;
	    (e_df+i)->y2 = (df+((unit+i)->tail)-1)->y;
	    (e_df+i)->m2 = 0;
	}

////////////////////////////////////////////
	                  /////////////////////belong to team 3 zhong xing li
int item1=(unit+i)->head;
int item2=(unit+i)->tail;
int item3=(unit+i)->serial_of_material;

double x1=(node+item1-1)->x, y1=(node+item1-1)->y;
double x2=(node+item2-1)->x, y2=(node+item2-1)->y;

double l=pow((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2),0.5);
double ankle=asin(fabs(y1-y2)/l);

int qqq,www;

	if((unit+i)->C=='F')
		{  matrix_for_gangjia  gangjia(cos(ankle),sin(ankle),(material+item3-1)->E,(material+item3-1)->I,(material+item3-1)->A,l);
    for(qqq=0;qqq<=5;qqq++)
		for(www=0;www<=5;www++)
	(unit+i)->gangjia_matrix[qqq][www]=gangjia.matrix_gangjia[qqq][www];
		}

	if((unit+i)->C=='T')
	{  
		matrix_for_gan  gan(cos(ankle),sin(ankle),((material+item3-1)->E)*((material+item3-1)->A)/l);
    for(qqq=0;qqq<=3;qqq++)
		for(www=0;www<=3;www++)
		{(unit+i)->gan_matrix[qqq][www]=gan.matrix_gan[qqq][www];}

	}
	
}


//以下为所给例题(data.txt)的( LM )数组信息输出
cout<<"( LM )数组"<<endl;
for(i=0;i<number_of_unit;i++)
{	
cout<<"单元"<<i+1<<": "<<(e_df+i)->x1<<"  "<<(e_df+i)->y1<<"  "<<(e_df+i)->m1<<"  "
    <<(e_df+i)->x2<<"  "<<(e_df+i)->y2<<"  "<<(e_df+i)->m2<<"  ";
cout<<endl;
}

cout<<endl<<endl<<"刚度矩阵"<<endl;
for(i=0;i<number_of_unit;i++)
{   cout<<endl<<"                          单元"<<i+1<<endl;
int qqq,www;
   if((unit+i)->C=='F')
   {
	   for(qqq=0;qqq<=5;qqq++)
		   for(www=0;www<=5;www++)
		   {cout<<(unit+i)->gangjia_matrix[qqq][www]<<"   ";if (www==5)cout<<endl;}
   }
   if((unit+i)->C=='T')
   {
	   for(qqq=0;qqq<=3;qqq++)
		   for(www=0;www<=3;www++)
		   {cout<<(unit+i)->gan_matrix[qqq][www]<<"   ";if (www==3)cout<<endl;}
   }

}



////////////////////////////////////////
               /////////////////////////belong to team3 huang  ren  han
 double *changdu=new  double[number_of_unit];  //单元长度
  //单元长度的计算
  double pow1,pow2;
  for(i=0;i<number_of_unit;i++)
  {
	pow1=pow(((node+((unit+i)->head)-1)->x)-((node+((unit+i)->tail)-1)->x),2);
	pow2=pow(((node+((unit+i)->head)-1)->y)-((node+((unit+i)->tail)-1)->y),2);
    *(changdu+i)=sqrt(pow1+pow2);
  }

   //斜杆角度的计算
  double *sin=new double[number_of_unit];
  double *cos=new double[number_of_unit];
  for(i=0;i<number_of_unit;i++)
  {
	  *(sin+i)=((((node+((unit+i)->tail))-1)->y)-(((node+((unit+i)->head))-1)->y))/(*(changdu+i));
	  *(cos+i)=((((node+((unit+i)->tail))-1)->x)-(((node+((unit+i)->head))-1)->x))/(*(changdu+i));
  }

//满跨均布荷载的等效节点力的计算
  struct equivalent_jiedian_force_spread *spread_equal=new struct equivalent_jiedian_force_spread[number_of_spread_load];
 
  for(i=0;i<number_of_spread_load;i++)
  {
	  (spread_equal+i)->Nx1_x=(-1)*0.5*((spread_load+i)->end_fx)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Nx1_y=(-1)*0.5*((spread_load+i)->end_fx)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1))); 
      (spread_equal+i)->Nx2_x=(-1)*0.5*((spread_load+i)->end_fx)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Nx2_y=(-1)*0.5*((spread_load+i)->end_fx)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1)));   
	  (spread_equal+i)->Qx1_x=(-1)*(-1)*0.5*((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Qx1_y=(-1)*0.5*((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Qx2_x=(-1)*(-1)*0.5*((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Qx2_y=(-1)*0.5*((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Mx1=((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;
      (spread_equal+i)->Mx2=(-1)*((spread_load+i)->end_fx)*(*(sin+((spread_load+i)->serial_of_element-1)))*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;
     
      (spread_equal+i)->Ny1_x=(-1)*0.5*((spread_load+i)->end_fy)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Ny1_y=(-1)*0.5*((spread_load+i)->end_fy)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1))); 
	  (spread_equal+i)->Ny2_x=(-1)*0.5*((spread_load+i)->end_fy)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1))); 
	  (spread_equal+i)->Ny2_y=(-1)*0.5*((spread_load+i)->end_fy)*(*(sin+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1))); 
	  (spread_equal+i)->Qy1_x=(-1)*0.5*((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Qy1_y=0.5*((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Qy2_x=(-1)*0.5*((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(sin+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Qy2_y=0.5*((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*(*(changdu+((spread_load+i)->serial_of_element-1)))*(*(cos+((spread_load+i)->serial_of_element-1)));

      (spread_equal+i)->My1=(-1)*((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;
      (spread_equal+i)->My2=((spread_load+i)->end_fy)*(*(cos+((spread_load+i)->serial_of_element-1)))*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;
	  
	  //若考虑空间结构,还要在以下的程序段中加入杆和Z方向的夹角的正余弦值 
      /*(spread_equal+i)->Nz1=(-1)*0.5*((spread_load+i)->end_fz)*(*(changdu+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Nz2=0.5*((spread_load+i)->end_fz)*(*(changdu+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Qz1=(-1)*0.5*((spread_load+i)->end_fz)*(*(changdu+((spread_load+i)->serial_of_element-1)));
	  (spread_equal+i)->Qz2=0.5*((spread_load+i)->end_fz)*(*(changdu+((spread_load+i)->serial_of_element-1)));
      (spread_equal+i)->Mz1=((spread_load+i)->end_fz)*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;
      (spread_equal+i)->Mz2=(-1)*((spread_load+i)->end_fz)*pow(*(changdu+((spread_load+i)->serial_of_element-1)),2)/12;*/
  }

⌨️ 快捷键说明

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