#define EPS 1.0e-6

for(int k=1; k<=NLDB; k++){ FIDB[k] = 0.0; LIDB[k] = 0; }

int KB2 = KB2; for(int mm=1; mm<=KB2; mm++){ if(mm <= KB){ double X = DBX1[mm]; double Y = DBY1[mm]; } if(mm > KB){ int KTFF = mm - KB; double X = DBX2[KTFF]; double Y = DBY2[KTFF]; } for(int ii=1; ii<=NE; ii++){ int I1 = IIII[ii][0]; int I2 = IIII[ii][1]; int I3 = IIII[ii][2]; int I4 = IIII[ii][3]; double XX[4] = {XN[I1], XN[I2], XN[I3], XN[I4]}; double YY[4] = {YN[I1], YN[I2], YN[I3], YN[I4]}; double E13[2] = {XX[0]-XX[2], YY[0]-YY[2]}; double E24[2] = {XX[1]-XX[3], YY[1]-YY[3]}; double EZ3 = E13[0]E24[1] - E24[0]E13[1]; if(fabs(EZ3) > EPS){ double X1 = XX[0] - X; double Y1 = YY[0] - Y; double X2 = XX[1] - X; double Y2 = YY[1] - Y; double Z12 = X1Y2 - Y1X2; double D12 = 1Z12; if(D12 < 1.0e-10) continue; double X3 = XX[2] - X; double Y3 = YY[2] - Y; double Z23 = X2Y3 - Y2X3; double D23 = 1Z23; if(D23 < 1.0e-10) continue; double X4 = XX[3] - X; double Y4 = YY[3] - Y; if(NE34[ii] == 4){ double Z34 = X3Y4 - Y3X4; double D34 = 1Z34; if(D34 < 1.0e-10) continue; } double Z41 = X4Y1 - Y4X1; double D41 = 1*Z41; if(D41 < 1.0e-10) continue; if(mm <= KB){ IIDBX1[mm][0] = I1; IIDBX1[mm][1] = I2; IIDBX1[mm][2] = I3; IIDBX1[mm][3] = I4; IIK1 = ii; goto label_500; } if(mm > KB){ int KTT = mm - KB; IIDBX2[KTT][0] = I1; IIDBX2[KTT][1] = I2; IIDBX2[KTT][2] = I3; IIDBX2[KTT][3] = I4; IIK2 = ii; goto label_500; } } } }

label_500:;

Fortran 到 C 代码转换:几何计算示例

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

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