转化为C语言 SUBROUTINE PREVCRVCRIIIIXNYNZNNE34NEL0NK IMPLICIT REAL8A-HO-Z DIMENSION VCRL03IIIINENKXNL0YNL0ZNL0NE34NE DIMENSION EZ3IX4XX4YY4ZZ4E313E423 DO 90 I=1L0
void prevcr(double VCR[][3], int IIII[][NK], double XN[], double YN[], double ZN[], int NE34[], int NE, int L0, int NK) { double EZ[3], IX[4], XX[4], YY[4], ZZ[4], E31[3], E42[3]; for (int I = 0; I < L0; I++) { for (int J = 0; J < 3; J++) { VCR[I][J] = 0.0; } } for (int II = 0; II < NE; II++) { for (int J = 0; J < NK; J++) { IX[J] = IIII[II][J]; XX[J] = XN[IX[J]]; YY[J] = YN[IX[J]]; ZZ[J] = ZN[IX[J]]; } E31[0] = XX[2] - XX[0]; E31[1] = YY[2] - YY[0]; E31[2] = ZZ[2] - ZZ[0]; E42[0] = XX[3] - XX[1]; E42[1] = YY[3] - YY[1]; E42[2] = ZZ[3] - ZZ[1]; EZ[0] = E31[1] * E42[2] - E42[1] * E31[2]; EZ[1] = E31[2] * E42[0] - E42[2] * E31[0]; EZ[2] = E31[0] * E42[1] - E42[0] * E31[1]; double DEX = sqrt(EZ[0] * EZ[0] + EZ[1] * EZ[1] + EZ[2] * EZ[2] + 1.0e-80); EZ[0] /= DEX; EZ[1] /= DEX; EZ[2] /= DEX; for (int J = 0; J < 3; J++) { VCR[IX[0]][J] += EZ[J]; VCR[IX[1]][J] += EZ[J]; VCR[IX[2]][J] += EZ[J]; if (NE34[II] == 4) { VCR[IX[3]][J] += EZ[J]; } } } for (int I = 0; I < L0; I++) { double VV3 = sqrt(VCR[I][0] * VCR[I][0] + VCR[I][1] * VCR[I][1] + VCR[I][2] * VCR[I][2]) + 1.0e-50; VCR[I][0] /= VV3; VCR[I][1] /= VV3; VCR[I][2] /= VV3; }
原文地址: https://www.cveoy.top/t/topic/g9ig 著作权归作者所有。请勿转载和采集!