void PREPDS(double *PDS, double R00, double R45, double R90, int IRR) { double RM00, RM45, RM90; double RR, EAA, AAA, AR00, P11, P12, P22, P33, DJ;

if (IRR == 0) {
    RM00 = R00;
    RM45 = R45;
    RM90 = R90;
    RR = (RM00 + 2.0 * RM45 + RM90) / 4.0;
    EAA = 2.0 * (2.0 + RR) / (1.0 + 2.0 * RR) / 3.0;
    PDS[0] = EAA * (1.0 + RR);
    PDS[1] = EAA;
    PDS[2] = 0.0;
    PDS[3] = EAA;
    PDS[4] = EAA * (1.0 + RR);
    PDS[5] = 0.0;
    PDS[6] = 0.0;
    PDS[7] = 0.0;
    PDS[8] = EAA;
}

if (IRR == 1) {
    RM00 = R00;
    RM45 = R45;
    RM90 = R90;
    AAA = 1.5 * (RM90 + RM00 * RM90) / (RM00 + RM90 + RM00 * RM90);
    AR00 = 1.0 + RM00;
    P11 = AAA;
    P12 = -AAA * RM00 / AR00;
    P22 = AAA * RM00 * (1.0 + RM90) / RM90 / AR00;
    P33 = AAA * (1.0 + 2.0 * RM45) * (RM00 + RM90) / RM90 / AR00;
    DJ = P11 * P22 - P12 * P12;
    PDS[0] = P22 / DJ;
    PDS[1] = -P12 / DJ;
    PDS[2] = 0.0;
    PDS[3] = PDS[1];
    PDS[4] = P11 / DJ;
    PDS[5] = 0.0;
    PDS[6] = 0.0;
    PDS[7] = 0.0;
    PDS[8] = 2.0 / P33;
}

}

Fortran 代码转换为 C 代码:PDS 数组优化

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

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