C语言翻译:PREBINDER 子程序实现
void PREBINDER(double *FBHZ, int *IXXX, double *FH, double *XN, double *YN, double *ZN, double *XH, double *YH, int *IIII, int *IIIIH, int L0, int L0H, int NE, int NEH, int NK, int NCHE) {
double XXH[4], YYH[4], IXH[4], XX[4], YY[4], ZZ[4], IX[4];
int I00=0, IXYD=0;
double F00=0.0, XA, YA, EPS=1.0e-6, XMAX, XMIN, YMAX, YMIN, DX21, DY21, DZ21, DX31, DY31, DZ31, DX41, DY41, DZ41, XD1, XD2, XD3, AREAE1, AREAE2, AREAE, ANN, BHF3, BHF4;
for(int I0=0; I0<NEH; I0++) {
for(int JJ=0; JJ<NK; JJ++) {
IXH[JJ] = IIIIH[I0*NK+JJ];
XXH[JJ] = XH[IXH[JJ]];
YYH[JJ] = YH[IXH[JJ]];
}
if(IXH[2]==IXH[3] || IXH[3]==0) {
XA = (XXH[0]+XXH[1]+XXH[2])/3.0;
YA = (YYH[0]+YYH[1]+YYH[2])/3.0;
} else {
XA = (XXH[0]+XXH[1]+XXH[2]+XXH[3])/4.0;
YA = (YYH[0]+YYH[1]+YYH[2]+YYH[3])/4.0;
}
for(int II=0; II<NE; II++) {
for(int JJ=0; JJ<NK; JJ++) {
IX[JJ] = IIII[II*NK+JJ];
XX[JJ] = XN[IX[JJ]];
YY[JJ] = YN[IX[JJ]];
ZZ[JJ] = ZN[IX[JJ]];
}
}
IXYD=0;
XMAX=XX[0];
XMIN=XX[0];
YMAX=YY[0];
YMIN=YY[0];
for(int I=1; I<NK; I++) {
if(XMAX<XX[I]) XMAX=XX[I];
if(YMAX<YY[I]) YMAX=YY[I];
if(XMIN>XX[I]) XMIN=XX[I];
if(YMIN>YY[I]) YMIN=YY[I];
}
if(XA<XMAX+EPS && XA>XMIN-EPS) {
if(YA<YMAX+EPS && YA>YMIN-EPS) {
IXYD=1;
}
}
if(IXYD==1) PREXYB(&IXYD, XX, YY, &XA, &YA, NK);
if(IXYD==1 || IXYD==2) goto label_600;
label_200:
I00++;
F00+=FH[I0];
}
label_600:
if(IXYD==1 || IXYD==2) {
DX21=XX[1]-XX[0];
DY21=YY[1]-YY[0];
DZ21=ZZ[1]-ZZ[0];
DX31=XX[2]-XX[0];
DY31=YY[2]-YY[0];
DZ31=ZZ[2]-ZZ[0];
DX41=XX[3]-XX[0];
DY41=YY[3]-YY[0];
DZ41=ZZ[3]-ZZ[0];
XD1=DY21*DZ31-DY31*DZ21;
XD2=DZ21*DX31-DZ31*DX21;
XD3=DX21*DY31-DX31*DY31;
AREAE1=0.5*sqrt(XD1*XD1+XD2*XD2+XD3*XD3+1.0e-80);
XD1=DY41*DZ31-DY31*DZ41;
XD2=DZ41*DX31-DZ31*DX41;
XD3=DX41*DY31-DX31*DY41;
AREAE2=0.5*sqrt(XD1*XD1+XD2*XD2+XD3*XD3+1.0e-80);
AREAE=AREAE1+AREAE2;
if(IX[2]==IX[3] || IX[3]==0) {
ANN=3.0;
BHF3=FH[I0]/ANN;
for(int I=0; I<3; I++) {
FBHZ[IX[I]]+=BHF3;
IXXX[IX[I]]=3;
}
} else {
ANN=4.0;
BHF4=FH[I0]/ANN;
for(int I=0; I<NK; I++) {
FBHZ[IX[I]]+=BHF4;
IXXX[IX[I]]=3;
}
}
}
}
原文地址: https://www.cveoy.top/t/topic/oFGH 著作权归作者所有。请勿转载和采集!