转换成C代码 SUBROUTINE SaveNAENumDL0DNEDIIIIDNKNumNAEDNAEAddDLIINAED + IINAED IMPLICIT NONE INTEGER L0DNEDNKLIINAED INTEGER IIIIDNEDNKNumNAEDL0DNAEAddDL0DIINAEDLIINAED INTEGER IIJJ
void SaveNAENumD(int L0D, int NED, int* IIIID, int NK, int* NumNAED, int* NAEAddD, int LIINAED, int* IINAED){ int II, JJ, n1, n2, n3, n4, address; int* NbNAED;
// 分配 NbNAED 数组并清零
NbNAED = (int*)malloc(L0D * sizeof(int));
for(II = 0; II < L0D; II++){
NbNAED[II] = 0;
}
for(II = 0; II < LIINAED; II++){
IINAED[II] = 0;
}
// 计算节点相邻单元并将其相邻单元号存储到一维变带宽数组 IINAE 中
for(II = 0; II < NED; II++){
n1 = IIIID[II*NK];
n2 = IIIID[II*NK + 1];
n3 = IIIID[II*NK + 2];
n4 = IIIID[II*NK + 3];
NbNAED[n1-1]++;
NbNAED[n2-1]++;
NbNAED[n3-1]++;
address = NAEAddD[n1-1] + NbNAED[n1-1] - 1;
IINAED[address] = II+1;
address = NAEAddD[n2-1] + NbNAED[n2-1] - 1;
IINAED[address] = II+1;
address = NAEAddD[n3-1] + NbNAED[n3-1] - 1;
IINAED[address] = II+1;
if(n3 != n4){
NbNAED[n4-1]++;
address = NAEAddD[n4-1] + NbNAED[n4-1] - 1;
IINAED[address] = II+1;
}
}
free(NbNAED);
原文地址: https://www.cveoy.top/t/topic/fzea 著作权归作者所有。请勿转载和采集!