翻译成C代码 SUBROUTINE EQUIUG0FDBTTSGEP0STESALLANGLEATEALMATL & XNYNZNIIIIID_ELMNE34NEL0NKK0MALNPRINT IMPLICIT REAL8A-HO-Z DIMENSI
void EQUIUG0(double FDB[], double TTSG[][3], double EP0[], double STESALL[][6], double ANGLE[], double ATEAL[][11], int MATL[], double XN[], double YN[], double ZN[], int IIII[][NK], int ID_ELM[], int NE34[], int NE, int L0, int NK, int K0, int MAL, int NPRINT) { double SG[3], SGP[3][3], PP[3][3], XX[4], YY[4], ZZ[4], IX[4], ID[8], XT[4], YT[4], SGI[3][3], SGALL[6]; double EYYM, VVPR, EP00, DKK, DNN, R00, R45, R90, ESS; char CARD[80]; int II, I;
for (II=0; II<NE; II++) {
PREMATnew(EYYM, VVPR, EP00, DKK, DNN, R00, R45, R90, ESS, ATEAL,
MATL[II], MAL);
PRETREA2(XX, YY, ZZ, IX, ID, XN, YN, ZN, IIII, II, NE, L0, NK, K0);
if (NE34[II] == 3) {
LAMBDA3(PP, XT, YT, XX, YY, ZZ);
}
if (NE34[II] == 4) {
LAMBDA(PP, XT, YT, XX, YY, ZZ);
}
SG[0] = TTSG[II][0];
SG[1] = TTSG[II][1];
SG[2] = TTSG[II][2];
if (EP0[II] > EP00) {
EQUISTRE(SGT, SG, ANGLE[II], R00, R45, R90);
double SGG = DKK * pow(EP0[II], DNN);
for (I=0; I<3; I++) {
SG[I] = SG[I] * SGG / SGT;
}
}
EQUISTRE(SGT, SG, ANGLE[II], R00, R45, R90);
FDB[II] = SGT;
// 求整体坐标系下的单元应力分量
SGI[0][0] = SG[0];
SGI[1][1] = SG[1];
SGI[0][1] = SG[2];
SGI[1][0] = SG[2];
SGI[0][2] = 0.0;
SGI[2][0] = 0.0;
SGI[1][2] = 0.0;
SGI[2][1] = 0.0;
SGI[2][2] = 0.0;
BTDB(3, 3, SGI, PP, SGP);
// Sxx
SGALL[0] = SGP[0][0];
// Syy
SGALL[1] = SGP[1][1];
// Szz
SGALL[2] = SGP[2][2];
// Sxy
SGALL[3] = SGP[0][1];
// Syz
SGALL[4] = SGP[1][2];
// Szx
SGALL[5] = SGP[2][0];
// Store stress into STESALL
STESALL[II][0] = SGALL[0];
STESALL[II][1] = SGALL[1];
STESALL[II][2] = SGALL[2];
STESALL[II][3] = SGALL[3];
STESALL[II][4] = SGALL[4];
STESALL[II][5] = SGALL[5];
}
原文地址: https://www.cveoy.top/t/topic/g8xG 著作权归作者所有。请勿转载和采集!