{"title":"转成C代码\nSUBROUTINE GETELEMENT(IIII,NE34,NA,NRNODE,LIID,LMMD,NAN,NNA,\n & NE,L0,NUMBER,NGS,NK)\n IMPLICIT REAL8(A-H,O-Z)\n\tDIMENSION IIII(NE,NK),NE34(NE),NA(L0+1),NAN(L0+1),NNA(NUMBER),\n & LMMD(L0),LIID(L0+1),NRNODE(NKNUMBER)\n DO I=1,L0+1\n NAN(I)=NA(I) \n ENDDO\n DO I=1,NUMBER\n NNA(I)=0\n ENDDO\nC 求节点相邻单元\n\tDO J=1,NE \n DO J1=1,NE34(J)\n\t\t NNA(NAN(IIII(J,J1)))=J \n NAN(IIII(J,J1))=NAN(IIII(J,J1))+1 \n ENDDO\n\tENDDO\nC 求节点的广义相邻节点 NRNODE(NKNUMBER)\nCbyd modify 20080904\nc\tNAN=0 \n DO I=1,L0+1\n NAN(I)=0\n ENDDO\n\tN=0\nCbyd modify 20080904\nc\tNRNODE=0\n DO I=1,NKNUMBER\n NRNODE(I)=0\n ENDDO\n\tNCOUNT=1\n\tLIID(1)=1 \n\tI=1\n10 IF(I.LE.L0)THEN\n\t DO J=NA(I),NA(I+1)-1\n DO J1=1,NE34(NNA(J))\n\t\t IF(NAN(IIII(NNA(J),J1)).NE.1)THEN\n NAN(IIII(NNA(J),J1))=1\t\n\t\t NRNODE(NCOUNT)=IIII(NNA(J),J1)\n\t\t NCOUNT=NCOUNT+1\n\t\t ENDIF\n ENDDO\n\t ENDDO\n\t LIID(I+1)=NCOUNT\n I=I+1\n\tELSE \n\t GO TO 100\n ENDIF\n DO II=LIID(I-1),LIID(I)-2\n KK=II\n\t DO JJ=II+1,LIID(I)-1\n\t\t\t IF(NRNODE(KK).GT.NRNODE(JJ))THEN\n\t\t\t\tKK=JJ\n\t\t\t ENDIF\n\t ENDDO \n NR=NRNODE(KK)\n\t\t NRNODE(KK)=NRNODE(II)\n\t\t NRNODE(II)=NR\n\tENDDO\n\tDO K=LIID(I-1),NCOUNT-1 \n\t NAN(NRNODE(K))=0 \n\t IF(NRNODE(K).EQ.(I-1)) LMMD(I-1)=K \n\tENDDO\n\tGO TO 10\n100 CONTINUE\n\tNCOUNT=NCOUNT-1\n\tNGS =4*NCOUNT \n\tRETURN\n\tEND","content":"c\n#include <stdio.h>\n\nvoid GETELEMENT(int IIII[][], int NE34[], int NA[], int NRNODE[], int LIID[], int LMMD[], int NAN[], int NNA[],\n int NE, int L0, int NUMBER, int NGS, int NK) {\n int I, J, J1, N, NCOUNT, NR, II, KK, JJ;\n \n for (I = 0; I < L0 + 1; I++) {\n NAN[I] = NA[I];\n }\n \n for (I = 0; I < NUMBER; I++) {\n NNA[I] = 0;\n }\n \n for (J = 0; J < NE; J++) {\n for (J1 = 0; J1 < NE34[J]; J1++) {\n NNA[NAN[IIII[J][J1]]] = J;\n NAN[IIII[J][J1]] = NAN[IIII[J][J1]] + 1;\n }\n }\n \n for (I = 0; I < L0 + 1; I++) {\n NAN[I] = 0;\n }\n \n N = 0;\n \n for (I = 0; I < NK * NUMBER; I++) {\n NRNODE[I] = 0;\n }\n \n NCOUNT = 1;\n LIID[0] = 1;\n I = 1;\n \n while (1) {\n if (I <= L0) {\n for (J = NA[I]; J < NA[I + 1]; J++) {\n for (J1 = 0; J1 < NE34[NNA[J]]; J1++) {\n if (NAN[IIII[NNA[J]][J1]] != 1) {\n NAN[IIII[NNA[J]][J1]] = 1;\n NRNODE[NCOUNT] = IIII[NNA[J]][J1];\n NCOUNT = NCOUNT + 1;\n }\n }\n }\n LIID[I] = NCOUNT;\n I = I + 1;\n }\n else {\n break;\n }\n }\n \n for (II = LIID[I - 2]; II < LIID[I] - 1; II++) {\n KK = II;\n for (JJ = II + 1; JJ < LIID[I] - 1; JJ++) {\n if (NRNODE[KK] > NRNODE[JJ]) {\n KK = JJ;\n }\n }\n NR = NRNODE[KK];\n NRNODE[KK] = NRNODE[II];\n NRNODE[II] = NR;\n }\n \n for (int K = LIID[I - 2]; K < NCOUNT - 1; K++) {\n NAN[NRNODE[K]] = 0;\n if (NRNODE[K] == (I - 1)) {\n LMMD[I - 1] = K;\n }\n }\n \n NCOUNT = NCOUNT - 1;\n NGS = 4 * NCOUNT;\n \n return;\n}\n

C语言实现GETELEMENT子程序

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

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