有限元C++程序.doc
文本预览下载声明
#include iostream.h
#include fstream.h
#include iomanip.h
#include math.h
class Q8 {
public:
int NN, NF, NE, KU, KV, KRX, KRY, KQ, LK;
int JEW[9], JLL[17], JE[9][501], JD[3006], KPQ[3][50], JRX[50], JRY[50], JU[50], JV[50];
double H[3+1], D[3+1], U[3007], FF[17], FS[6][6][9], FC[6][6][9], FA[6][6][9], B[5][17], C[5][17], XO[1504],
YO[1504], X[50],Y[50],SK[5000], PQ[5][50], RX[50], RY[50], US[50], VS[50],EK[137];
double PO, EO, RU, XC, XA, YC, YA, YN, QQ, VY, RPM;
public:
/**
* calculate
*/
void calculate() {
NF = NN + NN; //NN-节点个数 NF-节点位移(载荷)个数
//弹性矩阵[D]
if(D[0]==0){
D[1] = EO / (1.0 - PO * PO);
D[2] = D[1] * PO;
D[3] = D[1] * (1.0 - PO) / 2;
}
if(D[0]==2){
D[1] = EO * (1.0 - PO) / (1.0 + PO) / (1.0 - PO - PO);
D[2] = D[1] * PO / (1.0 - PO);
D[3] = D[1] * (1.0 - PO - PO) / (1.0 - PO) / 2;
}
SKDD();
NCNA();
VY = RU * (3.1415926 * RPM / 30) / 9.80;
if(H[0]==2){
H[1]=1;
H[2]=1;
H[3]=1;
}
if(H[0]==3){
H[1] = 5.0 / 9.0;
H[2] = 8.0 / 9.0;
H[3] = H[1];
}
//初始化矩阵
for(int i=0;i=NF;i++){
U[i]=0;
}
for (i = 0; i =LK; i++) {
SK[i]=0;
}
for (i = 1; i = NE; i++) {
int m, l1, l2;
for (int j = 1; j = 8; j++) {
m = JE[j][i];
l1 = j + j;
l2 = l1 - 1;
JLL[l2] = m + m - 1;
JLL[l1] = m + m;
}
FEKP(i);
SKKE();
}
RIGHT();
for (i = 1; i = KU; i++) {
FIXD(2 * JU[i] - 1, US[i]);
}
if (KV != 0) {
for (int j = 1; j =KV; j++) {
FIXD(2 * JV[j], VS[j]);
}
}
solve();
}
/**
* XYCA
*/
void XYCA(int i, int j,int n) {
double R, S, F, D;
int L;
XC = 0;
XA = 0;
YC = 0;
YA = 0;
YN = 0;
显示全部