📄 main.cpp
字号:
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 + -