5/15
新建文件夹,先做好前期结构数据化的手写性梳理,写一点变量的定义,感觉有很多重复的信息,但是懒得精简了。
编写输入文件in.txt,和直接用const差不多,感觉不如直接程序内打表,因为后面结构数据化的时候还是直接存的信息,泛用化水平进一步降低。
1 /* 矩阵位移法大作业 2 单元数:10 结点数:12 整体结点位移编码:22 3 结点编码: 4 1(0,0,1) 5 2(2,3,4) 6 3(5,6,7,) 7 4(0,0,0) 8 5(8,9,10) 9 6(5,6,11) 10 7(0,0,12) 11 8(13,14,15) 12 9(16,17,18) 13 10(13,14,19) 14 11(0,0,0) 15 12(20,21,22) 16 单元定位向量: 柱:0 梁:1 17 (1) 【0,0,1,2,3,4】 1,2 0 18 (2)【2,3,4,5,6,7】 2,3 1 19 (3)【0,0,0,8,9,10】 4,5 0 20 (4)【8,9,10,5,6,11】 5,6 0 21 (5)【8,9,10,13,14,15】 5,8 1 22 (6)【5,6,11,16,17,18】 6,9 1 23 (7)【0,0,12,13,14,15】 7,8 0 24 (8)【 13,14,15,16,17,18】 8,9 0 25 (9)【13,14,19,20,21,22】 10,12 1 26 (10)【0,0,0,20,21,22】 11,12 0 27 */ 28 /* 输入文件 in.txt 29 12 10 22 30 100000 15000 31 1000000 10000 32 3 4 3 33 4 3 2 34 20 35 12 14 10 36 0 0 1 37 2 3 4 38 5 6 7 39 0 0 0 40 8 9 10 41 5 6 11 42 0 0 12 43 13 14 15 44 16 17 18 45 13 14 19 46 0 0 0 47 20 21 22 48 1 2 0 49 2 3 1 50 4 5 0 51 5 6 0 52 5 8 1 53 6 9 1 54 7 8 0 55 8 9 0 56 10 12 1 57 11 12 0 58 */ 59 60 61 62 63 #include<iostream> 64 #include<fstream> 65 #include<cstdio> 66 #include<algorithm> 67 #include<cmath> 68 using namespace std; 69 double EA[3],EI[3]; //梁和柱的强度参数表 70 double l[4],h[4],q[4],Fp; // 跨长、层高、均布荷载、集中力 71 double K[25][25],k[25][25]; // 整体刚度矩阵 和 单元刚度矩阵 72 double alpha,T[8][8]; //旋转角和旋转矩阵 73 int Njoint,Nelem,NglbDOF; //结点数,单元数,结点位移个数 74 struct Joint{ //结点信息 75 double x,y; //坐标 76 int GDOF[5]; //结点位移编码 77 }J[20]; 78 struct Elem{ //单元信息 79 int N1,N2; //两个结点 80 int GlbDOF[8]; //单元定位向量 81 double len,A,EI,EA; //长度,转角,抗弯刚度,抗拉刚度 82 }E[15]; 83 int main(){ 84 cin>>Njoint>>Nelem>>NglbDOF; //读入信息 并 进行结构数据化 85 cin>>EA[0]>>EI[0]>>EA[1]>>EI[1]; 86 for(int i=1;i<=3;++i) cin>>l[i]; 87 for(int i=1;i<=3;++i) cin>>h[i]; cin>>Fp; 88 for(int i=1;i<=3;++i) cin>>q[i]; 89 90 J[1].x=J[2].x=0; //结点初始化 91 J[3].x=J[4].x=J[5].x=J[6].x=l[1]; 92 J[7].x=J[8].x=J[9].x=J[10].x=l[1]+l[2]; 93 J[11].x=J[12].x=l[1]+l[2]+l[3]; 94 J[1].y=J[4].y=J[7].y=J[11].y=0; 95 J[12].y=h[3]; 96 J[5].y=J[8].y=J[10].y=h[2]; 97 J[2].y=h[1]; 98 J[3].y=J[6].y=J[9].y=2.0*h[2]; 99 for(int i=1;i<=Njoint;++i) 100 for(int j=1;j<=3;++j) 101 cin>>J[i].GDOF[j]; 102 103 for(int i=1;i<=Nelem;++i){ //单元初始化 104 cin>>E[i].N1>>E[i].N2; 105 int opt; cin>>opt; 106 E[i].EA=EA[opt]; E[i].EI=EI[opt]; 107 for(int j=1;j<=3;++j){ 108 E[i].GlbDOF[j]=J[E[i].N1].GDOF[j]; 109 E[i].GlbDOF[j+3]=J[E[i].N2].GDOF[j]; 110 } 111 E[i].len=sqrt(pow(J[E[i].N1].x-J[E[i].N2].x,2)+pow(J[E[i].N1].y-J[E[i].N2].y,2)); 112 E[i].A= 113 } 114 115 116 }