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];
}
翻译成C代码 SUBROUTINE EQUIUG0FDBTTSGEP0STESALLANGLEATEALMATL & XNYNZNIIIIID_ELMNE34NEL0NKK0MALNPRINT IMPLICIT REAL8A-HO-Z DIMENSI

原文地址: https://www.cveoy.top/t/topic/g8xG 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录